mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-04 03:13:49 +00:00
Merge branch 'master' into translation
This commit is contained in:
commit
3f1f7ffdc2
90 files changed
+4094
-225
No files matched your search
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.sap.sailing.competitorimport</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -0,0 +1,7 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
||||
@@ -0,0 +1,3 @@
|
||||
eclipse.preferences.version=1
|
||||
pluginProject.extensions=false
|
||||
resolve.requirebundle=false
|
||||
@@ -0,0 +1,11 @@
|
||||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Competitorimport
|
||||
Bundle-SymbolicName: com.sap.sailing.competitorimport
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: SAP
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||
Export-Package: com.sap.sailing.competitorimport
|
||||
Require-Bundle: com.sap.sse.common,
|
||||
com.sap.sailing.domain.shared.android,
|
||||
com.sap.sailing.domain.common
|
||||
@@ -0,0 +1,4 @@
|
||||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<artifactId>root</artifactId>
|
||||
<groupId>com.sap.sailing</groupId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>com.sap.sailing.competitorimport</artifactId>
|
||||
<packaging>eclipse-plugin</packaging>
|
||||
</project>
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package com.sap.sailing.competitorimport;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sse.common.Named;
|
||||
|
||||
/**
|
||||
* Competitor data may come from various sources, such as external regatta management systems (RMS),
|
||||
* CSV files, Excel spreadsheets and the like. When creating a regatta that uses "RaceLog Tracking"
|
||||
* (also known as Smartphone Tracking)---and be it only in order to manage results for the regatta
|
||||
* with the race committee app---it is tedious having to enter all competitor data manually when
|
||||
* that data is already available in electronic form.<p>
|
||||
*
|
||||
* In its simplest form, a provider will just produce an otherwise unstructured list of competitor
|
||||
* entries with no hint as to the event, regatta or race that the competitor pertains to. More
|
||||
* sophisticated providers may structure competitor data into events, regattas or even individual
|
||||
* races so that importing these competitors into a single fleet of one race column becomes possible.
|
||||
* This will be particularly useful for split-fleet racing.
|
||||
*
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public interface CompetitorProvider extends Named {
|
||||
/**
|
||||
* @return keys are event names, values are the names of the regatta in the event for which the connector has
|
||||
* competitor names. Should the value for a key be <code>null</code>, competitors for the event may still
|
||||
* be available, only they may not be keyed per regatta in that case.
|
||||
*/
|
||||
Map<String, Set<String>> getHasCompetitorsForRegattasInEvent() throws IOException;
|
||||
|
||||
/**
|
||||
* Obtains competitor records from the source of import
|
||||
*
|
||||
* @param eventName
|
||||
* an event name as obtained as a key in {@link #getHasCompetitorsForRegattasInEvent()}'s result
|
||||
* @param regattaName
|
||||
* <code>null</code> to get the competitors for all regattas in the event specified by
|
||||
* <code>eventName</code>, or a regatta name as provided in the value set for the key
|
||||
* <code>eventName</code> as returned by {@link #getHasCompetitorsForRegattasInEvent()}.
|
||||
*/
|
||||
Iterable<CompetitorDescriptor> getCompetitorDescriptors(String eventName, String regattaName) throws JAXBException, IOException;
|
||||
}
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
package com.sap.sailing.domain.common;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.common.dto.PersonDTO;
|
||||
import com.sap.sse.common.CountryCode;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.Named;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.NamedImpl;
|
||||
|
||||
|
||||
public class CompetitorDescriptor extends NamedImpl implements Named {
|
||||
private static final long serialVersionUID = -6645726854552711646L;
|
||||
|
||||
private final String eventName;
|
||||
private final String regattaName;
|
||||
private final String boatClassName;
|
||||
private final String boatName;
|
||||
private final String teamName;
|
||||
private final String raceName;
|
||||
private final String fleetName;
|
||||
private final String sailNumber;
|
||||
private final String name;
|
||||
private final CountryCode countryCode;
|
||||
private final List<PersonDTO> persons;
|
||||
private final Double timeOnTimeFactor;
|
||||
private final Duration timeOnDistanceAllowancePerNauticalMile;
|
||||
|
||||
public CompetitorDescriptor(String eventName, String regattaName, String boatClassName, String raceName,
|
||||
String fleetName, String sailNumber, String name, String teamName, String boatName, CountryCode countryCode,
|
||||
Iterable<PersonDTO> persons, Double timeOnTimeFactor, Duration timeOnDistanceAllowancePerNauticalMile) {
|
||||
super(name);
|
||||
this.eventName = eventName;
|
||||
this.regattaName = regattaName;
|
||||
this.boatClassName = boatClassName;
|
||||
this.boatName = boatName;
|
||||
this.raceName = raceName;
|
||||
this.fleetName = fleetName;
|
||||
this.sailNumber = sailNumber;
|
||||
this.name = name;
|
||||
this.teamName = teamName;
|
||||
this.countryCode = countryCode;
|
||||
this.persons = new ArrayList<>();
|
||||
Util.addAll(persons, this.persons);
|
||||
this.timeOnTimeFactor = timeOnTimeFactor;
|
||||
this.timeOnDistanceAllowancePerNauticalMile = timeOnDistanceAllowancePerNauticalMile;
|
||||
}
|
||||
|
||||
public String getEventName() {
|
||||
return eventName;
|
||||
}
|
||||
|
||||
public String getRegattaName() {
|
||||
return regattaName;
|
||||
}
|
||||
|
||||
public String getBoatClassName() {
|
||||
return boatClassName;
|
||||
}
|
||||
|
||||
public String getRaceName() {
|
||||
return raceName;
|
||||
}
|
||||
|
||||
public String getFleetName() {
|
||||
return fleetName;
|
||||
}
|
||||
|
||||
public String getSailNumber() {
|
||||
return sailNumber;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public CountryCode getCountryCode() {
|
||||
return countryCode;
|
||||
}
|
||||
|
||||
public Iterable<PersonDTO> getPersons() {
|
||||
return persons;
|
||||
}
|
||||
|
||||
public Double getTimeOnTimeFactor() {
|
||||
return timeOnTimeFactor;
|
||||
}
|
||||
|
||||
public String getBoatName() {
|
||||
return boatName;
|
||||
}
|
||||
|
||||
public String getTeamName() {
|
||||
return teamName;
|
||||
}
|
||||
|
||||
public Duration getTimeOnDistanceAllowancePerNauticalMile() {
|
||||
return timeOnDistanceAllowancePerNauticalMile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CompetitorDescriptor [eventName=" + eventName + ", regattaName=" + regattaName + ", boatClassName="
|
||||
+ boatClassName + ", boatName=" + boatName + ", teamName=" + teamName + ", raceName=" + raceName
|
||||
+ ", fleetName=" + fleetName + ", sailNumber=" + sailNumber + ", name=" + name + ", countryCode="
|
||||
+ countryCode + ", persons=" + persons + ", timeOnTimeFactor=" + timeOnTimeFactor
|
||||
+ ", timeOnDistanceAllowancePerNauticalMile=" + timeOnDistanceAllowancePerNauticalMile + "]";
|
||||
}
|
||||
}
|
||||
+6
-1
@@ -20,6 +20,11 @@ public interface CompetitorDTO extends Serializable, MappableToDevice {
|
||||
|
||||
String getSearchTag();
|
||||
|
||||
/**
|
||||
* If the {@code searchTag} is not contained in {@link #getSearchTag()}, appends it to the search tag, separated by a space character
|
||||
*/
|
||||
void addToSearchTag(String searchTag);
|
||||
|
||||
BoatDTO getBoat();
|
||||
|
||||
BoatClassDTO getBoatClass();
|
||||
@@ -45,5 +50,5 @@ public interface CompetitorDTO extends Serializable, MappableToDevice {
|
||||
Double getTimeOnTimeFactor();
|
||||
|
||||
Duration getTimeOnDistanceAllowancePerNauticalMile();
|
||||
|
||||
|
||||
}
|
||||
+12
-4
@@ -181,22 +181,30 @@ public class CompetitorDTOImpl extends NamedDTO implements CompetitorDTO, Serial
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Color getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSearchTag() {
|
||||
return searchTag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addToSearchTag(String searchTag) {
|
||||
if (this.searchTag == null) {
|
||||
this.searchTag = searchTag;
|
||||
} else if (!this.searchTag.contains(searchTag)) {
|
||||
this.searchTag += " "+searchTag;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public String email(){
|
||||
return email;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEmail() {
|
||||
return email != null && !email.isEmpty();
|
||||
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
package com.sap.sailing.domain.common.dto;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
public class PersonDTO extends NamedDTO {
|
||||
private static final long serialVersionUID = 7248019801310303654L;
|
||||
private Date dateOfBirth;
|
||||
private String description;
|
||||
private String nationalityThreeLetterIOCAcronym;
|
||||
|
||||
PersonDTO() {} // for GWT de-serialization only
|
||||
|
||||
public PersonDTO(String name, Date dateOfBirth, String description, String nationalityThreeLetterIOCAcronym) {
|
||||
super(name);
|
||||
this.dateOfBirth = dateOfBirth;
|
||||
this.description = description;
|
||||
this.nationalityThreeLetterIOCAcronym = nationalityThreeLetterIOCAcronym;
|
||||
}
|
||||
|
||||
public Date getDateOfBirth() {
|
||||
return dateOfBirth;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public String getNationalityThreeLetterIOCAcronym() {
|
||||
return nationalityThreeLetterIOCAcronym;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = super.hashCode();
|
||||
result = prime * result + Objects.hash(dateOfBirth, description, nationalityThreeLetterIOCAcronym);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
if (!super.equals(obj)) {
|
||||
return false;
|
||||
}
|
||||
PersonDTO other = (PersonDTO) obj;
|
||||
return Objects.equals(dateOfBirth, other.dateOfBirth) && Objects.equals(description, other.description)
|
||||
&& Objects.equals(nationalityThreeLetterIOCAcronym, other.nationalityThreeLetterIOCAcronym);
|
||||
}
|
||||
}
|
||||
+6
@@ -112,6 +112,12 @@ public class PreviousCompetitorDTOImpl implements CompetitorDTO {
|
||||
" need to be replaced by an object of "+CompetitorDTOImpl.class.getName()+" after deserialization");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addToSearchTag(String searchTag) {
|
||||
throw new RuntimeException("Internal error. Objects of type "+PreviousCompetitorDTOImpl.class.getName()+
|
||||
" need to be replaced by an object of "+CompetitorDTOImpl.class.getName()+" after deserialization");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getImageURL() {
|
||||
throw new RuntimeException("Internal error. Objects of type "+PreviousCompetitorDTOImpl.class.getName()+
|
||||
|
||||
+6
@@ -125,6 +125,12 @@ public interface MongoObjectFactory {
|
||||
*/
|
||||
void storeCompetitor(Competitor competitor);
|
||||
|
||||
/**
|
||||
* Like {@link #storeCompetitor(Competitor)}, but for a collection of competitors that are all
|
||||
* expected to be new, having a unique {@link Competitor#getId() ID}.
|
||||
*/
|
||||
void storeCompetitors(Iterable<Competitor> competitors);
|
||||
|
||||
void removeAllCompetitors();
|
||||
|
||||
void removeCompetitor(Competitor competitor);
|
||||
|
||||
+16
@@ -2,6 +2,7 @@ package com.sap.sailing.domain.persistence.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
@@ -118,6 +119,7 @@ import com.sap.sse.common.TimeRange;
|
||||
import com.sap.sse.common.Timed;
|
||||
import com.sap.sse.common.TypeBasedServiceFinder;
|
||||
import com.sap.sse.common.TypeBasedServiceFinderFactory;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.shared.media.ImageDescriptor;
|
||||
import com.sap.sse.shared.media.VideoDescriptor;
|
||||
@@ -1245,6 +1247,20 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
collection.update(query, entry, /* upsrt */true, /* multi */false, WriteConcern.SAFE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void storeCompetitors(Iterable<Competitor> competitors) {
|
||||
if (competitors != null && !Util.isEmpty(competitors)) {
|
||||
DBCollection collection = database.getCollection(CollectionNames.COMPETITORS.name());
|
||||
List<DBObject> competitorsDB = new ArrayList<>();
|
||||
for (Competitor competitor : competitors) {
|
||||
JSONObject json = competitorSerializer.serialize(competitor);
|
||||
DBObject entry = (DBObject) JSON.parse(json.toString());
|
||||
competitorsDB.add(entry);
|
||||
}
|
||||
collection.insert(competitorsDB);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllCompetitors() {
|
||||
logger.info("Removing all persistent competitor info");
|
||||
|
||||
+2
-1
@@ -120,7 +120,8 @@ public class RaceLogFixTrackerManager implements TrackingDataLoader {
|
||||
stopTrackerIfStillRunning(preemptive);
|
||||
trackedRace.removeListener(raceChangeListener);
|
||||
synchronized (knownRaceLogs) {
|
||||
for (RaceLog raceLog : knownRaceLogs) {
|
||||
final Set<RaceLog> tempSet = new HashSet<>(knownRaceLogs);
|
||||
for (RaceLog raceLog : tempSet) {
|
||||
removeRaceLogUnlocked(raceLog);
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -68,6 +68,8 @@ public interface CompetitorStore extends CompetitorFactory {
|
||||
String newSailId, Nationality newNationality, URI newTeamImageUri, URI newFlagImageUri,
|
||||
Double timeOnTimeFactor, Duration timeOnDistanceAllowancePerNauticalMile, String searchTag);
|
||||
|
||||
void addCompetitors(Iterable<Competitor> competitors);
|
||||
|
||||
CompetitorDTO convertToCompetitorDTO(Competitor c);
|
||||
|
||||
/**
|
||||
|
||||
+13
@@ -274,4 +274,17 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
||||
LockUtil.unlockAfterWrite(lock);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCompetitors(Iterable<Competitor> competitors) {
|
||||
LockUtil.lockForWrite(lock);
|
||||
try {
|
||||
for (Competitor competitor: competitors) {
|
||||
competitorCache.put(competitor.getId(), competitor);
|
||||
competitorsByIdAsString.put(competitor.getId().toString(), competitor);
|
||||
}
|
||||
} finally {
|
||||
LockUtil.unlockAfterWrite(lock);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -464,4 +464,11 @@ Computes leaderboard information for sailing races and offers RESTful APIs to al
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.sap.sailing.competitorimport"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
</feature>
|
||||
@@ -112,7 +112,6 @@ fieldset legend {
|
||||
|
||||
.dialogMessageLabel {
|
||||
font-weight: bold;
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
select {
|
||||
|
||||
@@ -52,7 +52,8 @@ Require-Bundle: com.sap.sailing.domain,
|
||||
com.sap.sailing.polars.datamining.shared,
|
||||
com.sap.sailing.polars.datamining,
|
||||
com.sap.sse.datamining.annotations,
|
||||
com.sap.sse.shared.android
|
||||
com.sap.sse.shared.android,
|
||||
com.sap.sailing.competitorimport
|
||||
Bundle-Activator: com.sap.sailing.gwt.ui.server.Activator
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Import-Package: javax.servlet;version="3.1.0",
|
||||
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
package com.google.gwt.user.client.rpc.core.com.sap.sailing.domain.common;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.rpc.CustomFieldSerializer;
|
||||
import com.google.gwt.user.client.rpc.SerializationException;
|
||||
import com.google.gwt.user.client.rpc.SerializationStreamReader;
|
||||
import com.google.gwt.user.client.rpc.SerializationStreamWriter;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.dto.PersonDTO;
|
||||
import com.sap.sse.common.CountryCode;
|
||||
import com.sap.sse.common.Duration;
|
||||
|
||||
public class CompetitorDescriptor_CustomFieldSerializer extends CustomFieldSerializer<CompetitorDescriptor> {
|
||||
|
||||
@Override
|
||||
public void serializeInstance(SerializationStreamWriter streamWriter, CompetitorDescriptor instance)
|
||||
throws SerializationException {
|
||||
serialize(streamWriter, instance);
|
||||
}
|
||||
|
||||
public static void serialize(SerializationStreamWriter streamWriter, CompetitorDescriptor instance)
|
||||
throws SerializationException {
|
||||
streamWriter.writeObject(instance.getPersons());
|
||||
streamWriter.writeString(instance.getEventName());
|
||||
streamWriter.writeString(instance.getRegattaName());
|
||||
streamWriter.writeString(instance.getBoatClassName());
|
||||
streamWriter.writeString(instance.getRaceName());
|
||||
streamWriter.writeString(instance.getFleetName());
|
||||
streamWriter.writeString(instance.getSailNumber());
|
||||
streamWriter.writeString(instance.getName());
|
||||
streamWriter.writeString(instance.getTeamName());
|
||||
streamWriter.writeString(instance.getBoatName());
|
||||
streamWriter.writeObject(instance.getCountryCode());
|
||||
streamWriter.writeObject(instance.getTimeOnTimeFactor());
|
||||
streamWriter.writeObject(instance.getTimeOnDistanceAllowancePerNauticalMile());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCustomInstantiateInstance() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompetitorDescriptor instantiateInstance(SerializationStreamReader streamReader)
|
||||
throws SerializationException {
|
||||
return instantiate(streamReader);
|
||||
}
|
||||
|
||||
public static CompetitorDescriptor instantiate(SerializationStreamReader streamReader)
|
||||
throws SerializationException {
|
||||
@SuppressWarnings("unchecked")
|
||||
final List<PersonDTO> persons = (List<PersonDTO>) streamReader.readObject();
|
||||
return new CompetitorDescriptor(streamReader.readString(), streamReader.readString(),
|
||||
streamReader.readString(), streamReader.readString(), streamReader.readString(),
|
||||
streamReader.readString(), streamReader.readString(), streamReader.readString(),
|
||||
streamReader.readString(), (CountryCode) streamReader.readObject(),
|
||||
persons, (Double) streamReader.readObject(), (Duration) streamReader.readObject());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserializeInstance(SerializationStreamReader streamReader, CompetitorDescriptor instance)
|
||||
throws SerializationException {
|
||||
deserialize(streamReader, instance);
|
||||
}
|
||||
|
||||
public static void deserialize(SerializationStreamReader streamReader, CompetitorDescriptor instance) {
|
||||
// Done by instantiateInstance
|
||||
}
|
||||
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
package com.google.gwt.user.client.rpc.core.com.sap.sailing.domain.common.dto;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.google.gwt.user.client.rpc.CustomFieldSerializer;
|
||||
import com.google.gwt.user.client.rpc.SerializationException;
|
||||
import com.google.gwt.user.client.rpc.SerializationStreamReader;
|
||||
import com.google.gwt.user.client.rpc.SerializationStreamWriter;
|
||||
import com.sap.sailing.domain.common.dto.PersonDTO;
|
||||
|
||||
public class PersonDTO_CustomFieldSerializer extends CustomFieldSerializer<PersonDTO> {
|
||||
|
||||
@Override
|
||||
public void serializeInstance(SerializationStreamWriter streamWriter, PersonDTO instance)
|
||||
throws SerializationException {
|
||||
serialize(streamWriter, instance);
|
||||
}
|
||||
|
||||
public static void serialize(SerializationStreamWriter streamWriter, PersonDTO instance)
|
||||
throws SerializationException {
|
||||
streamWriter.writeString(instance.getName());
|
||||
streamWriter.writeObject(instance.getDateOfBirth());
|
||||
streamWriter.writeString(instance.getDescription());
|
||||
streamWriter.writeString(instance.getNationalityThreeLetterIOCAcronym());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCustomInstantiateInstance() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PersonDTO instantiateInstance(SerializationStreamReader streamReader)
|
||||
throws SerializationException {
|
||||
return instantiate(streamReader);
|
||||
}
|
||||
|
||||
public static PersonDTO instantiate(SerializationStreamReader streamReader)
|
||||
throws SerializationException {
|
||||
return new PersonDTO(streamReader.readString(), (Date) streamReader.readObject(),
|
||||
streamReader.readString(), streamReader.readString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserializeInstance(SerializationStreamReader streamReader, PersonDTO instance)
|
||||
throws SerializationException {
|
||||
deserialize(streamReader, instance);
|
||||
}
|
||||
|
||||
public static void deserialize(SerializationStreamReader streamReader, PersonDTO instance) {
|
||||
// Done by instantiateInstance
|
||||
}
|
||||
|
||||
}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
package com.google.gwt.user.client.rpc.core.com.sap.sse.common.impl;
|
||||
|
||||
import com.google.gwt.user.client.rpc.CustomFieldSerializer;
|
||||
import com.google.gwt.user.client.rpc.SerializationException;
|
||||
import com.google.gwt.user.client.rpc.SerializationStreamReader;
|
||||
import com.google.gwt.user.client.rpc.SerializationStreamWriter;
|
||||
import com.sap.sse.common.impl.CountryCodeImpl;
|
||||
|
||||
public class CountryCodeImpl_CustomFieldSerializer extends CustomFieldSerializer<CountryCodeImpl> {
|
||||
|
||||
@Override
|
||||
public void serializeInstance(SerializationStreamWriter streamWriter, CountryCodeImpl instance)
|
||||
throws SerializationException {
|
||||
serialize(streamWriter, instance);
|
||||
}
|
||||
|
||||
public static void serialize(SerializationStreamWriter streamWriter, CountryCodeImpl instance)
|
||||
throws SerializationException {
|
||||
streamWriter.writeString(instance.getName());
|
||||
streamWriter.writeString(instance.getTwoLetterISOCode());
|
||||
streamWriter.writeString(instance.getThreeLetterISOCode());
|
||||
streamWriter.writeString(instance.getIANAInternet());
|
||||
streamWriter.writeString(instance.getUNVehicle());
|
||||
streamWriter.writeString(instance.getThreeLetterIOCCode());
|
||||
streamWriter.writeString(instance.getUNISONumeric());
|
||||
streamWriter.writeString(instance.getITUCallPrefix());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCustomInstantiateInstance() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CountryCodeImpl instantiateInstance(SerializationStreamReader streamReader)
|
||||
throws SerializationException {
|
||||
return instantiate(streamReader);
|
||||
}
|
||||
|
||||
public static CountryCodeImpl instantiate(SerializationStreamReader streamReader)
|
||||
throws SerializationException {
|
||||
return new CountryCodeImpl(streamReader.readString(), streamReader.readString(),
|
||||
streamReader.readString(), streamReader.readString(), streamReader.readString(), streamReader.readString(),
|
||||
streamReader.readString(), streamReader.readString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserializeInstance(SerializationStreamReader streamReader, CountryCodeImpl instance)
|
||||
throws SerializationException {
|
||||
deserialize(streamReader, instance);
|
||||
}
|
||||
|
||||
public static void deserialize(SerializationStreamReader streamReader, CountryCodeImpl instance) {
|
||||
// Done by instantiateInstance
|
||||
}
|
||||
|
||||
}
|
||||
+1
-3
@@ -545,9 +545,7 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel
|
||||
|
||||
listBoxRegattas.clear();
|
||||
listBoxRegattas.addItem(stringMessages.all(), "");
|
||||
for (String regatta : regattaNames) {
|
||||
listBoxRegattas.addItem(regatta, regatta);
|
||||
}
|
||||
regattaNames.stream().sorted().forEach(regatta->listBoxRegattas.addItem(regatta, regatta));
|
||||
allRaces = newAllRaces;
|
||||
filterablePanelRaces.updateAll(allRaces);
|
||||
}
|
||||
|
||||
+240
@@ -0,0 +1,240 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.cell.client.FieldUpdater;
|
||||
import com.google.gwt.cell.client.SafeHtmlCell;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.resources.client.ImageResource;
|
||||
import com.google.gwt.safehtml.shared.SafeHtml;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
import com.google.gwt.user.cellview.client.Column;
|
||||
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
||||
import com.google.gwt.user.cellview.client.TextColumn;
|
||||
import com.google.gwt.user.client.ui.ImageResourceRenderer;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.gwt.ui.client.FlagImageResolver;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell;
|
||||
import com.sap.sse.common.util.NaturalComparator;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
|
||||
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
|
||||
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
|
||||
|
||||
public class CompetitorDescriptorTableWrapper<S extends RefreshableSelectionModel<CompetitorDescriptor>>
|
||||
extends TableWrapper<CompetitorDescriptor, S> {
|
||||
|
||||
private final LabeledAbstractFilterablePanel<CompetitorDescriptor> filterablePanelCompetitorDescriptor;
|
||||
|
||||
private final CompetitorImportMatcher competitorImportMatcher;
|
||||
|
||||
private static class CompetitorImportTableActionIcons extends ImagesBarCell {
|
||||
static final String ACTION_UNLINK = "ACTION_UNLINK";
|
||||
private final StringMessages stringMessages;
|
||||
private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
|
||||
|
||||
public CompetitorImportTableActionIcons(StringMessages stringMessages) {
|
||||
super();
|
||||
this.stringMessages = stringMessages;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Iterable<ImageSpec> getImageSpecs() {
|
||||
return Arrays.asList(
|
||||
new ImageSpec(ACTION_UNLINK, stringMessages.actionEdit(), makeImagePrototype(resources.unlinkIcon()))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* An unlink button is rendered if an only if the {@code data} value is not an empty string.
|
||||
*/
|
||||
@Override
|
||||
protected void render(Context context, SafeHtml data, SafeHtmlBuilder sb) {
|
||||
if (!data.asString().isEmpty()) {
|
||||
super.render(context, data, sb);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An instance implementing this interface may be passed to the constructor of the table wrapper. It will then receive
|
||||
* a callback whenever the unlink action has been triggered. This way the table of importable competitors doesn't need
|
||||
* to know about how the selection models are used outside of the table itself to establish the link between the
|
||||
* importable and existing competitor.<p>
|
||||
*
|
||||
* Furthermore, the {@link #getExigetExistingCompetitorToUseInsteadOf} method tells the existing competitor to which
|
||||
* a competitor that can be imported is mapped. If {@code null} is returned, no such mapping exists for an importable
|
||||
* competitor, and calling {@link #unlinkCompetitor} will not have any effect.
|
||||
*
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public static interface CompetitorsToImportToExistingLinking {
|
||||
void unlinkCompetitor(CompetitorDescriptor competitor);
|
||||
CompetitorDTO getExistingCompetitorToUseInsteadOf(CompetitorDescriptor competitor);
|
||||
}
|
||||
|
||||
public CompetitorDescriptorTableWrapper(CompetitorImportMatcher competitorImportMatcherParam,
|
||||
SailingServiceAsync sailingService, final StringMessages stringMessages, ErrorReporter errorReporter,
|
||||
boolean multiSelection, boolean enablePager, final CompetitorsToImportToExistingLinking unlinkCallback) {
|
||||
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager,
|
||||
new EntityIdentityComparator<CompetitorDescriptor>() {
|
||||
@Override
|
||||
public boolean representSameEntity(CompetitorDescriptor dto1, CompetitorDescriptor dto2) {
|
||||
return dto1.equals(dto2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode(CompetitorDescriptor dto) {
|
||||
return dto.hashCode();
|
||||
}
|
||||
});
|
||||
this.competitorImportMatcher = competitorImportMatcherParam;
|
||||
filterablePanelCompetitorDescriptor = new LabeledAbstractFilterablePanel<CompetitorDescriptor>(
|
||||
new Label(stringMessages.filterImportedCompetitorsByNameSailRaceFleet()),
|
||||
new ArrayList<CompetitorDescriptor>(), table, dataProvider) {
|
||||
@Override
|
||||
public Iterable<String> getSearchableStrings(CompetitorDescriptor competitorDescriptor) {
|
||||
List<String> string = new ArrayList<String>();
|
||||
string.add(competitorDescriptor.getName());
|
||||
string.add(competitorDescriptor.getSailNumber());
|
||||
string.add(competitorDescriptor.getBoatClassName());
|
||||
string.add(competitorDescriptor.getRaceName());
|
||||
string.add(competitorDescriptor.getFleetName());
|
||||
return string;
|
||||
}
|
||||
};
|
||||
registerSelectionModelOnNewDataProvider(filterablePanelCompetitorDescriptor.getAllListDataProvider());
|
||||
|
||||
TextColumn<CompetitorDescriptor> competitorNameColumn = new TextColumn<CompetitorDescriptor>() {
|
||||
@Override
|
||||
public String getValue(CompetitorDescriptor competitor) {
|
||||
return competitor.getName();
|
||||
}
|
||||
};
|
||||
competitorNameColumn.setSortable(true);
|
||||
|
||||
Column<CompetitorDescriptor, SafeHtml> sailIdColumn = new Column<CompetitorDescriptor, SafeHtml>(
|
||||
new SafeHtmlCell()) {
|
||||
@Override
|
||||
public SafeHtml getValue(CompetitorDescriptor competitor) {
|
||||
SafeHtmlBuilder sb = new SafeHtmlBuilder();
|
||||
ImageResourceRenderer renderer = new ImageResourceRenderer();
|
||||
final String twoLetterIsoCountryCode = competitor.getCountryCode().getTwoLetterISOCode();
|
||||
final ImageResource flagImageResource;
|
||||
if (twoLetterIsoCountryCode == null || twoLetterIsoCountryCode.isEmpty()) {
|
||||
flagImageResource = FlagImageResolver.getEmptyFlagImageResource();
|
||||
} else {
|
||||
flagImageResource = FlagImageResolver.getFlagImageResource(twoLetterIsoCountryCode);
|
||||
}
|
||||
if (flagImageResource != null) {
|
||||
sb.append(renderer.render(flagImageResource));
|
||||
sb.appendHtmlConstant(" ");
|
||||
}
|
||||
|
||||
sb.appendEscaped(competitor.getSailNumber());
|
||||
return sb.toSafeHtml();
|
||||
}
|
||||
};
|
||||
sailIdColumn.setSortable(true);
|
||||
|
||||
TextColumn<CompetitorDescriptor> boatClassNameColumn = new TextColumn<CompetitorDescriptor>() {
|
||||
@Override
|
||||
public String getValue(CompetitorDescriptor competitorDescriptor) {
|
||||
return competitorDescriptor.getBoatClassName();
|
||||
}
|
||||
};
|
||||
boatClassNameColumn.setSortable(true);
|
||||
|
||||
TextColumn<CompetitorDescriptor> raceNameColumn = new TextColumn<CompetitorDescriptor>() {
|
||||
@Override
|
||||
public String getValue(CompetitorDescriptor competitorDescriptor) {
|
||||
return competitorDescriptor.getRaceName();
|
||||
}
|
||||
};
|
||||
raceNameColumn.setSortable(true);
|
||||
|
||||
TextColumn<CompetitorDescriptor> fleetNameColumn = new TextColumn<CompetitorDescriptor>() {
|
||||
@Override
|
||||
public String getValue(CompetitorDescriptor competitorDescriptor) {
|
||||
return competitorDescriptor.getFleetName();
|
||||
}
|
||||
};
|
||||
fleetNameColumn.setSortable(true);
|
||||
|
||||
TextColumn<CompetitorDescriptor> isHasMatchesColumn = new TextColumn<CompetitorDescriptor>() {
|
||||
@Override
|
||||
public String getValue(CompetitorDescriptor competitorDescriptor) {
|
||||
return competitorImportMatcher.getMatchesCompetitors(competitorDescriptor).isEmpty()
|
||||
? stringMessages.no() : stringMessages.yes();
|
||||
}
|
||||
};
|
||||
isHasMatchesColumn.setSortable(true);
|
||||
// alters the getValue method such that it returns an empty string if the competitor to import is not linked to an existing one, non-null otherwise
|
||||
ImagesBarColumn<CompetitorDescriptor, CompetitorImportTableActionIcons> unlinkColumn =
|
||||
new ImagesBarColumn<CompetitorDescriptor, CompetitorDescriptorTableWrapper.CompetitorImportTableActionIcons>(new CompetitorImportTableActionIcons(stringMessages)) {
|
||||
@Override
|
||||
public String getValue(CompetitorDescriptor competitor) {
|
||||
return unlinkCallback.getExistingCompetitorToUseInsteadOf(competitor)==null?"":"linked";
|
||||
}
|
||||
};
|
||||
unlinkColumn.setFieldUpdater(new FieldUpdater<CompetitorDescriptor, String>() {
|
||||
@Override
|
||||
public void update(int index, final CompetitorDescriptor competitor, String value) {
|
||||
if (CompetitorImportTableActionIcons.ACTION_UNLINK.equals(value)) {
|
||||
if (unlinkCallback != null) {
|
||||
unlinkCallback.unlinkCompetitor(competitor);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
unlinkColumn.setSortable(true);
|
||||
mainPanel.insert(filterablePanelCompetitorDescriptor, 0);
|
||||
table.addColumn(sailIdColumn, stringMessages.sailNumber());
|
||||
table.addColumn(competitorNameColumn, stringMessages.name());
|
||||
table.addColumn(boatClassNameColumn, stringMessages.boatClass());
|
||||
table.addColumn(raceNameColumn, stringMessages.race());
|
||||
table.addColumn(fleetNameColumn, stringMessages.fleet());
|
||||
table.addColumn(isHasMatchesColumn, stringMessages.hasMatches());
|
||||
table.addColumn(unlinkColumn, stringMessages.unlink());
|
||||
table.addColumnSortHandler(getCompetitorDescriptorTableColumnListSortHandler(competitorNameColumn, boatClassNameColumn,
|
||||
sailIdColumn, raceNameColumn, fleetNameColumn, isHasMatchesColumn, unlinkColumn, unlinkCallback));
|
||||
}
|
||||
|
||||
private ListHandler<CompetitorDescriptor> getCompetitorDescriptorTableColumnListSortHandler(
|
||||
TextColumn<CompetitorDescriptor> competitorNameColumn,
|
||||
TextColumn<CompetitorDescriptor> boatClassNameColumn, Column<CompetitorDescriptor, SafeHtml> sailIdColumn,
|
||||
TextColumn<CompetitorDescriptor> raceNameColumn,
|
||||
TextColumn<CompetitorDescriptor> fleetNameColumn, TextColumn<CompetitorDescriptor> isHasMatchesColumn,
|
||||
ImagesBarColumn<CompetitorDescriptor, CompetitorImportTableActionIcons> unlinkColumn, CompetitorsToImportToExistingLinking unlinkCallback) {
|
||||
ListHandler<CompetitorDescriptor> competitorColumnListHandler = getColumnSortHandler();
|
||||
final NaturalComparator caseInsensitiveNaturalComparator = new NaturalComparator(/* case sensitive */ false);
|
||||
final Comparator<CompetitorDTO> nullFirstComparator = Comparator.nullsFirst(/* real comparator */ null);
|
||||
competitorColumnListHandler.setComparator(competitorNameColumn, (cd1, cd2)->caseInsensitiveNaturalComparator.compare(cd1.getName(), cd2.getName()));
|
||||
competitorColumnListHandler.setComparator(boatClassNameColumn, (cd1, cd2)->caseInsensitiveNaturalComparator.compare(cd1.getBoatClassName(), cd2.getBoatClassName()));
|
||||
competitorColumnListHandler.setComparator(sailIdColumn, (cd1, cd2)->caseInsensitiveNaturalComparator.compare(cd1.getSailNumber(), cd2.getSailNumber()));
|
||||
competitorColumnListHandler.setComparator(raceNameColumn, (cd1, cd2)->caseInsensitiveNaturalComparator.compare(cd1.getRaceName(), cd2.getRaceName()));
|
||||
competitorColumnListHandler.setComparator(fleetNameColumn, (cd1, cd2)->caseInsensitiveNaturalComparator.compare(cd1.getFleetName(), cd2.getFleetName()));
|
||||
competitorColumnListHandler.setComparator(isHasMatchesColumn, (cd1, cd2)->((Boolean) competitorImportMatcher.getMatchesCompetitors(cd1).isEmpty()).compareTo(
|
||||
competitorImportMatcher.getMatchesCompetitors(cd2).isEmpty()));
|
||||
competitorColumnListHandler.setComparator(unlinkColumn, (cd1, cd2)->(nullFirstComparator.compare(
|
||||
unlinkCallback.getExistingCompetitorToUseInsteadOf(cd1), unlinkCallback.getExistingCompetitorToUseInsteadOf(cd2))));
|
||||
return competitorColumnListHandler;
|
||||
}
|
||||
|
||||
public Iterable<CompetitorDescriptor> getAllCompetitorDescriptors() {
|
||||
return filterablePanelCompetitorDescriptor.getAll();
|
||||
}
|
||||
|
||||
public void refreshCompetitorDescriptorList(Iterable<CompetitorDescriptor> competitors) {
|
||||
filterablePanelCompetitorDescriptor.updateAll(competitors);
|
||||
}
|
||||
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
/**
|
||||
* Used to find existing competitors which match with imported competitor. Currently use the simple exact match
|
||||
* comparison.
|
||||
*
|
||||
* @author Alexander Tatarinovich
|
||||
*
|
||||
*/
|
||||
public class CompetitorImportMatcher {
|
||||
//FIXME: Not sure about the amount of data. May be need to implement some cache for that.
|
||||
private final Iterable<CompetitorDTO> existingCompetitorDTOs;
|
||||
|
||||
public CompetitorImportMatcher(Iterable<CompetitorDTO> existingCompetitors) {
|
||||
this.existingCompetitorDTOs = existingCompetitors;
|
||||
}
|
||||
|
||||
public Set<CompetitorDTO> getMatchesCompetitors(CompetitorDescriptor competitorDescriptor) {
|
||||
Set<CompetitorDTO> matchesCompetitor = new HashSet<>();
|
||||
if (competitorDescriptor == null) {
|
||||
return matchesCompetitor;
|
||||
}
|
||||
for (CompetitorDTO existingCompetitor : existingCompetitorDTOs) {
|
||||
if (isEqual(competitorDescriptor, existingCompetitor)) {
|
||||
matchesCompetitor.add(existingCompetitor);
|
||||
}
|
||||
}
|
||||
return matchesCompetitor;
|
||||
}
|
||||
|
||||
private boolean isEqual(CompetitorDescriptor competitorDescriptor, CompetitorDTO existingCompetitor) {
|
||||
return Util.equalsWithNull(competitorDescriptor.getName(), existingCompetitor.getName(), /* ignoreCase */ true)
|
||||
&& Util.equalsWithNull(removeSpaces(competitorDescriptor.getSailNumber()), removeSpaces(existingCompetitor.getSailID()), /* ignoreCase */ true)
|
||||
&& compareCountryCode(competitorDescriptor, existingCompetitor);
|
||||
}
|
||||
|
||||
private String removeSpaces(String s) {
|
||||
return s==null?null:s.replace(" ", "").replace("\t", "");
|
||||
}
|
||||
|
||||
private boolean compareCountryCode(CompetitorDescriptor competitorDescriptor, CompetitorDTO existingCompetitor) {
|
||||
return Util.equalsWithNull(competitorDescriptor.getCountryCode().getThreeLetterIOCCode(),
|
||||
existingCompetitor.getThreeLetterIocCountryCode(), /* ignoreCase */ true);
|
||||
}
|
||||
}
|
||||
+278
@@ -0,0 +1,278 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.FocusWidget;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.base.CompetitorStore;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.gwt.ui.client.ParallelExecutionCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ParallelExecutionHolder;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.CompetitorProviderDTO;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
|
||||
import com.sap.sse.gwt.client.controls.busyindicator.BusyDisplay;
|
||||
import com.sap.sse.gwt.client.controls.busyindicator.BusyIndicator;
|
||||
import com.sap.sse.gwt.client.controls.busyindicator.SimpleBusyIndicator;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
|
||||
/**
|
||||
* Defines the dialog for displaying competitor provider names and list box of pair "event, regatta" names where we have
|
||||
* competitors available for importing. Also defines which dialog would be created for matching imported competitors
|
||||
* using the factory {@link MatchImportedCompetitorsDialogFactory}
|
||||
*
|
||||
* @author Alexander Tatarinovich
|
||||
*
|
||||
*/
|
||||
public class CompetitorImportProviderSelectionDialog extends DataEntryDialog<CompetitorImportSelectionDialogResult> {
|
||||
|
||||
private final ListBox competitorListBox;
|
||||
private final ListBox competitorProviderListBox;
|
||||
private final BusyIndicator busyIndicator;
|
||||
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final StringMessages stringMessages;
|
||||
private final ErrorReporter errorReporter;
|
||||
|
||||
/**
|
||||
* a unique and human-readable string key for a eventNameRegattaName pair
|
||||
*/
|
||||
private final LinkedHashMap<String, Pair<String, String>> eventRegattaNamesByCompetitorListItem;
|
||||
|
||||
public CompetitorImportProviderSelectionDialog(MatchImportedCompetitorsDialogFactory matchCompetitorsDialogFactory,
|
||||
BusyDisplay busynessPanel, Iterable<String> competitorProviderNames, SailingServiceAsync sailingService,
|
||||
StringMessages stringMessages, ErrorReporter errorReporter) {
|
||||
super(stringMessages.importCompetitors(), null, stringMessages.ok(), stringMessages.cancel(), null,
|
||||
new Callback(matchCompetitorsDialogFactory, sailingService, busynessPanel, errorReporter,
|
||||
stringMessages));
|
||||
this.sailingService = sailingService;
|
||||
this.stringMessages = stringMessages;
|
||||
this.errorReporter = errorReporter;
|
||||
|
||||
competitorProviderListBox = createListBox(/* isMultipleSelect */ false);
|
||||
competitorListBox = createListBox(/* isMultipleSelect */ false);
|
||||
competitorListBox.setVisible(false);
|
||||
busyIndicator = new SimpleBusyIndicator();
|
||||
eventRegattaNamesByCompetitorListItem = new LinkedHashMap<>();
|
||||
competitorProviderListBox.addChangeHandler(new ChangeHandler() {
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
int selectedIndex = competitorProviderListBox.getSelectedIndex();
|
||||
if (selectedIndex > 0) {
|
||||
String selectedProviderName = competitorProviderListBox.getItemText(selectedIndex);
|
||||
competitorImportProviderChanged(selectedProviderName);
|
||||
} else {
|
||||
competitorImportProviderChanged(null);
|
||||
}
|
||||
}
|
||||
});
|
||||
addProviderNamesToListBox(competitorProviderNames, stringMessages);
|
||||
}
|
||||
|
||||
private void addProviderNamesToListBox(Iterable<String> competitorProviderNames, StringMessages stringMessages) {
|
||||
List<String> sortedProviderNames = getSortedProviderNames(competitorProviderNames);
|
||||
competitorProviderListBox.addItem(stringMessages.selectCompetitorImportProvider());
|
||||
for (String providerName : sortedProviderNames) {
|
||||
competitorProviderListBox.addItem(providerName);
|
||||
}
|
||||
}
|
||||
|
||||
private List<String> getSortedProviderNames(Iterable<String> competitorProviderNames) {
|
||||
List<String> sortedProviderNames = new ArrayList<>();
|
||||
for (String providerName : competitorProviderNames) {
|
||||
sortedProviderNames.add(providerName);
|
||||
}
|
||||
Collections.sort(sortedProviderNames);
|
||||
return sortedProviderNames;
|
||||
}
|
||||
|
||||
private void competitorImportProviderChanged(String selectedProviderName) {
|
||||
if (selectedProviderName != null) {
|
||||
busyIndicator.setBusy(true);
|
||||
competitorProviderListBox.setEnabled(false);
|
||||
sailingService.getCompetitorProviderDTOByName(selectedProviderName,
|
||||
new AsyncCallback<CompetitorProviderDTO>() {
|
||||
@Override
|
||||
public void onSuccess(CompetitorProviderDTO result) {
|
||||
updateCompetitorListBox(result);
|
||||
competitorListBox.setVisible(true);
|
||||
busyIndicator.setBusy(false);
|
||||
competitorProviderListBox.setEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
updateCompetitorListBox(null);
|
||||
competitorListBox.setVisible(false);
|
||||
busyIndicator.setBusy(false);
|
||||
competitorProviderListBox.setEnabled(true);
|
||||
errorReporter.reportError(
|
||||
stringMessages.errorLoadingCompetitorImportProviders(caught.getMessage()));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
competitorListBox.setVisible(false);
|
||||
updateCompetitorListBox(null);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateCompetitorListBox(CompetitorProviderDTO competitorProvider) {
|
||||
eventRegattaNamesByCompetitorListItem.clear();
|
||||
competitorListBox.clear();
|
||||
if (competitorProvider != null) {
|
||||
competitorListBox.addItem(stringMessages.pleaseSelectAScoringResult());
|
||||
List<Pair<String, String>> eventAndRegattaNames = getEventAndRegattaNamesWhichHasCompetitors(competitorProvider);
|
||||
for (Pair<String, String> pair : eventAndRegattaNames) {
|
||||
String eventName = pair.getA();
|
||||
String ragattaName = pair.getB();
|
||||
String competitorImportSourceName = eventName + ", " + ragattaName;
|
||||
eventRegattaNamesByCompetitorListItem.put(competitorImportSourceName, pair);
|
||||
competitorListBox.addItem(competitorImportSourceName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<Pair<String, String>> getEventAndRegattaNamesWhichHasCompetitors(CompetitorProviderDTO competitorProvider) {
|
||||
List<Pair<String, String>> eventAndRegattaNames = new ArrayList<>();
|
||||
for (Entry<String, Set<String>> entry : competitorProvider.getHasCompetitorsForRegattasInEvent().entrySet()) {
|
||||
for (String ragattaName : entry.getValue()) {
|
||||
eventAndRegattaNames.add(new Pair<>(entry.getKey(), ragattaName));
|
||||
}
|
||||
}
|
||||
return eventAndRegattaNames;
|
||||
}
|
||||
|
||||
private static class Callback implements DialogCallback<CompetitorImportSelectionDialogResult> {
|
||||
private final BusyDisplay busyDisplay;
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final ErrorReporter errorReporter;
|
||||
private final StringMessages stringMessages;
|
||||
private final MatchImportedCompetitorsDialogFactory matchCompetitorsDialogFactory;
|
||||
|
||||
public Callback(MatchImportedCompetitorsDialogFactory matchCompetitorsDialogFactory,
|
||||
SailingServiceAsync sailingService, BusyDisplay busyDisplay, ErrorReporter errorReporter,
|
||||
StringMessages stringMessages) {
|
||||
this.sailingService = sailingService;
|
||||
this.busyDisplay = busyDisplay;
|
||||
this.errorReporter = errorReporter;
|
||||
this.stringMessages = stringMessages;
|
||||
this.matchCompetitorsDialogFactory = matchCompetitorsDialogFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
// don't do anything; dialog was canceled
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok(final CompetitorImportSelectionDialogResult competitorImportDialogResult) {
|
||||
if (competitorImportDialogResult != null) {
|
||||
final String competitorProviderName = competitorImportDialogResult.getProviderName();
|
||||
final String eventName = competitorImportDialogResult.getEventName();
|
||||
final String regattaName = competitorImportDialogResult.getRegattaName();
|
||||
busyDisplay.setBusy(true);
|
||||
@SuppressWarnings("unchecked")
|
||||
final Iterable<CompetitorDescriptor>[] competitorDescriptors = (Iterable<CompetitorDescriptor>[]) new Iterable<?>[1];
|
||||
@SuppressWarnings("unchecked")
|
||||
final Iterable<CompetitorDTO>[] competitors = (Iterable<CompetitorDTO>[]) new Iterable<?>[1];
|
||||
final ParallelExecutionCallback<List<CompetitorDescriptor>> getCompetitorDescriptorsCallback =
|
||||
new ParallelExecutionCallback<List<CompetitorDescriptor>>() {
|
||||
@Override
|
||||
public void onSuccess(List<CompetitorDescriptor> myCompetitorDescriptors) {
|
||||
competitorDescriptors[0] = myCompetitorDescriptors;
|
||||
super.onSuccess(myCompetitorDescriptors);
|
||||
}
|
||||
};
|
||||
final ParallelExecutionCallback<Iterable<CompetitorDTO>> getCompetitorsCallback =
|
||||
new ParallelExecutionCallback<Iterable<CompetitorDTO>>() {
|
||||
@Override
|
||||
public void onSuccess(Iterable<CompetitorDTO> myCompetitors) {
|
||||
competitors[0] = myCompetitors;
|
||||
super.onSuccess(myCompetitors);
|
||||
}
|
||||
};
|
||||
// the following parallel execution holder fires its handleSuccess method after both callbacks have succeeded
|
||||
new ParallelExecutionHolder(getCompetitorDescriptorsCallback, getCompetitorsCallback) {
|
||||
@Override
|
||||
protected void handleSuccess() {
|
||||
busyDisplay.setBusy(false);
|
||||
matchCompetitorsDialogFactory.createMatchImportedCompetitorsDialog(competitorDescriptors[0], competitors[0]).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleFailure(Throwable t) {
|
||||
busyDisplay.setBusy(false);
|
||||
errorReporter.reportError(
|
||||
stringMessages.errorLoadingCompetitorImportDescriptors(t.getMessage()));
|
||||
}
|
||||
};
|
||||
// trigger both calls, allowing for parallel execution, synchronizing with the parallel execution holder above:
|
||||
sailingService.getCompetitorDescriptors(competitorProviderName, eventName, regattaName, new MarkedAsyncCallback<>(getCompetitorDescriptorsCallback));
|
||||
sailingService.getCompetitors(new MarkedAsyncCallback<>(getCompetitorsCallback));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory for creating specific dialog {@link MatchImportedCompetitorsDialog} where we will be match imported
|
||||
* competitors.
|
||||
*
|
||||
* @param competitorDescriptors
|
||||
* imported competitor descriptors {@link CompetitorDescriptor}
|
||||
* @param competitors
|
||||
* existing competitors from {@link CompetitorStore}
|
||||
* @author Alexander Tatarinovich
|
||||
*
|
||||
*/
|
||||
public interface MatchImportedCompetitorsDialogFactory {
|
||||
MatchImportedCompetitorsDialog createMatchImportedCompetitorsDialog(
|
||||
Iterable<CompetitorDescriptor> competitorDescriptors, Iterable<CompetitorDTO> competitors);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
VerticalPanel vPanel = new VerticalPanel();
|
||||
vPanel.add(busyIndicator);
|
||||
vPanel.add(competitorProviderListBox);
|
||||
vPanel.add(competitorListBox);
|
||||
return vPanel;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FocusWidget getInitialFocusWidget() {
|
||||
return competitorProviderListBox;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CompetitorImportSelectionDialogResult getResult() {
|
||||
CompetitorImportSelectionDialogResult competitorImportDialogResult = null;
|
||||
int selectedProviderIndex = competitorProviderListBox.getSelectedIndex();
|
||||
if (selectedProviderIndex > 0) {
|
||||
String selectedProviderName = competitorProviderListBox.getItemText(selectedProviderIndex);
|
||||
int selectedScoreCorrectionIndex = competitorListBox.getSelectedIndex();
|
||||
if (selectedScoreCorrectionIndex > 0) {
|
||||
Pair<String, String> pair = eventRegattaNamesByCompetitorListItem
|
||||
.get(competitorListBox.getValue(selectedScoreCorrectionIndex));
|
||||
String eventName = pair.getA();
|
||||
String regattaName = pair.getB();
|
||||
competitorImportDialogResult = new CompetitorImportSelectionDialogResult(selectedProviderName,
|
||||
eventName, regattaName);
|
||||
}
|
||||
}
|
||||
return competitorImportDialogResult;
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
public class CompetitorImportSelectionDialogResult {
|
||||
private final String providerName;
|
||||
private final String eventName;
|
||||
private final String regattaName;
|
||||
|
||||
public CompetitorImportSelectionDialogResult(String providerName, String eventName, String regattaName) {
|
||||
this.providerName = providerName;
|
||||
this.eventName = eventName;
|
||||
this.regattaName = regattaName;
|
||||
}
|
||||
|
||||
public String getProviderName() {
|
||||
return providerName;
|
||||
}
|
||||
|
||||
public String getEventName() {
|
||||
return eventName;
|
||||
}
|
||||
|
||||
public String getRegattaName() {
|
||||
return regattaName;
|
||||
}
|
||||
}
|
||||
+61
-2
@@ -4,18 +4,24 @@ import java.util.Set;
|
||||
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTOImpl;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.CompetitorImportProviderSelectionDialog.MatchImportedCompetitorsDialogFactory;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
|
||||
import com.sap.sse.gwt.client.controls.busyindicator.BusyDisplay;
|
||||
import com.sap.sse.gwt.client.controls.busyindicator.BusyIndicator;
|
||||
import com.sap.sse.gwt.client.controls.busyindicator.SimpleBusyIndicator;
|
||||
|
||||
/**
|
||||
* Allows an administrator to view and edit the set of competitors currently maintained by the server.
|
||||
@@ -23,11 +29,13 @@ import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public class CompetitorPanel extends SimplePanel {
|
||||
public class CompetitorPanel extends SimplePanel implements BusyDisplay {
|
||||
private final CompetitorTableWrapper<RefreshableMultiSelectionModel<CompetitorDTO>> competitorTable;
|
||||
private final RefreshableMultiSelectionModel<CompetitorDTO> refreshableCompetitorSelectionModel;
|
||||
private final String leaderboardName;
|
||||
|
||||
private final BusyIndicator busyIndicator;
|
||||
|
||||
public CompetitorPanel(final SailingServiceAsync sailingService, final StringMessages stringMessages,
|
||||
final ErrorReporter errorReporter) {
|
||||
this(sailingService, null, stringMessages, errorReporter);
|
||||
@@ -39,6 +47,9 @@ public class CompetitorPanel extends SimplePanel {
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ false);
|
||||
this.refreshableCompetitorSelectionModel = (RefreshableMultiSelectionModel<CompetitorDTO>) competitorTable.getSelectionModel();
|
||||
|
||||
busyIndicator = new SimpleBusyIndicator(false, 0.8f);
|
||||
|
||||
VerticalPanel mainPanel = new VerticalPanel();
|
||||
this.setWidget(mainPanel);
|
||||
mainPanel.setWidth("100%");
|
||||
@@ -85,6 +96,31 @@ public class CompetitorPanel extends SimplePanel {
|
||||
});
|
||||
buttonPanel.add(selectAllButton);
|
||||
|
||||
Button competitorImportButton = new Button(stringMessages.importCompetitors());
|
||||
competitorImportButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
sailingService.getCompetitorProviderNames(new AsyncCallback<Iterable<String>>() {
|
||||
@Override
|
||||
public void onSuccess(Iterable<String> providerNames) {
|
||||
MatchImportedCompetitorsDialogFactory matchCompetitorsDialogFactory = getMatchCompetitorsDialogFactory(
|
||||
sailingService, stringMessages, errorReporter);
|
||||
CompetitorImportProviderSelectionDialog dialog = new CompetitorImportProviderSelectionDialog(
|
||||
matchCompetitorsDialogFactory, CompetitorPanel.this, providerNames, sailingService,
|
||||
stringMessages, errorReporter);
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter
|
||||
.reportError(stringMessages.errorLoadingCompetitorImportProviders(caught.getMessage()));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
buttonPanel.add(competitorImportButton);
|
||||
|
||||
//only if this competitor panel is connected to a leaderboard, we want to enable invitations
|
||||
if (leaderboardName != null) {
|
||||
final Button inviteCompetitorsButton = new Button(stringMessages.inviteSelectedCompetitors());
|
||||
@@ -92,7 +128,6 @@ public class CompetitorPanel extends SimplePanel {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
Set<CompetitorDTO> competitors = refreshableCompetitorSelectionModel.getSelectedSet();
|
||||
|
||||
CompetitorInvitationHelper helper = new CompetitorInvitationHelper(sailingService, stringMessages, errorReporter);
|
||||
helper.inviteCompetitors(competitors, leaderboardName);
|
||||
}
|
||||
@@ -101,6 +136,7 @@ public class CompetitorPanel extends SimplePanel {
|
||||
}
|
||||
|
||||
competitorsPanel.add(buttonPanel);
|
||||
mainPanel.add(busyIndicator);
|
||||
mainPanel.add(competitorTable);
|
||||
|
||||
refreshableCompetitorSelectionModel.addSelectionChangeHandler(new Handler() {
|
||||
@@ -116,6 +152,22 @@ public class CompetitorPanel extends SimplePanel {
|
||||
}
|
||||
}
|
||||
|
||||
private MatchImportedCompetitorsDialogFactory getMatchCompetitorsDialogFactory(
|
||||
final SailingServiceAsync sailingService, final StringMessages stringMessages,
|
||||
final ErrorReporter errorReporter) {
|
||||
return new MatchImportedCompetitorsDialogFactory() {
|
||||
@Override
|
||||
public MatchImportedCompetitorsDialog createMatchImportedCompetitorsDialog(
|
||||
final Iterable<CompetitorDescriptor> competitorDescriptors,
|
||||
final Iterable<CompetitorDTO> competitors) {
|
||||
ImportCompetitorCallback importCompetitorCallback = new ImportCompetitorCallback(sailingService,
|
||||
errorReporter, stringMessages);
|
||||
return new MatchImportedCompetitorsDialog(competitorDescriptors, competitors, stringMessages,
|
||||
sailingService, errorReporter, importCompetitorCallback);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void openAddCompetitorDialog() {
|
||||
competitorTable.openEditCompetitorDialog(new CompetitorDTOImpl(), /* boat class to be used from CompetitorDTO */ null);
|
||||
}
|
||||
@@ -123,4 +175,11 @@ public class CompetitorPanel extends SimplePanel {
|
||||
public void refreshCompetitorList() {
|
||||
competitorTable.refreshCompetitorList(leaderboardName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBusy(boolean isBusy) {
|
||||
if (busyIndicator.isBusy() != isBusy) {
|
||||
busyIndicator.setBusy(isBusy);
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
-4
@@ -333,23 +333,26 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
|
||||
final CompetitorEditDialog dialog = new CompetitorEditDialog(stringMessages, originalCompetitor, new DialogCallback<CompetitorDTO>() {
|
||||
@Override
|
||||
public void ok(final CompetitorDTO competitor) {
|
||||
sailingService.addOrUpdateCompetitor(competitor, new AsyncCallback<CompetitorDTO>() {
|
||||
final List<CompetitorDTO> competitors = new ArrayList<>();
|
||||
competitors.add(competitor);
|
||||
sailingService.addOrUpdateCompetitor(competitors, new AsyncCallback<List<CompetitorDTO>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to update competitor: " + caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(CompetitorDTO updatedCompetitor) {
|
||||
public void onSuccess(List<CompetitorDTO> updatedCompetitor) {
|
||||
assert updatedCompetitor.size() == 1;
|
||||
//only reload selected competitors reloading with refreshCompetitorList(leaderboardName)
|
||||
//would not work in case the list is not based on a leaderboard e.g. AbstractCompetitorRegistrationDialog
|
||||
int editedCompetitorIndex = getFilterField().indexOf(originalCompetitor);
|
||||
getFilterField().remove(originalCompetitor);
|
||||
if (editedCompetitorIndex >= 0){
|
||||
getFilterField().add(editedCompetitorIndex, updatedCompetitor);
|
||||
getFilterField().add(editedCompetitorIndex, updatedCompetitor.iterator().next());
|
||||
} else {
|
||||
//in case competitor was not present --> not edit, but create
|
||||
getFilterField().add(updatedCompetitor);
|
||||
getFilterField().add(updatedCompetitor.iterator().next());
|
||||
}
|
||||
getDataProvider().refresh();
|
||||
}
|
||||
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
|
||||
/**
|
||||
* Callback is responsible for creation competitors for which no {@link CompetitorDTO} that represents an
|
||||
* already existing competitor has been provided, and save those newly created competitors to
|
||||
* the competitor store using {@link SailingServiceAsync#addCompetitors(Iterable, AsyncCallback)}. The combined
|
||||
* set of competitors as represented by the {@link CompetitorDTO}s provided as values representing the existing
|
||||
* competitors to use, plus those {@link CompetitorDTO}s returned from the service representing the newly
|
||||
* created competitors (those actually "imported") are then passed to {@link #registerCompetitors(Set)} which
|
||||
* in this class does nothing but may be overridden by subclasses.
|
||||
*
|
||||
* @author Alexander Tatarinovich
|
||||
*
|
||||
*/
|
||||
public class ImportCompetitorCallback implements DialogCallback<Pair<Map<CompetitorDescriptor, CompetitorDTO>, String>> {
|
||||
protected final SailingServiceAsync sailingService;
|
||||
protected final ErrorReporter errorReporter;
|
||||
protected final StringMessages stringMessages;
|
||||
|
||||
public ImportCompetitorCallback(SailingServiceAsync sailingService, ErrorReporter errorReporter,
|
||||
StringMessages stringMessages) {
|
||||
this.sailingService = sailingService;
|
||||
this.errorReporter = errorReporter;
|
||||
this.stringMessages = stringMessages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok(final Pair<Map<CompetitorDescriptor, CompetitorDTO>, String> competitorsForRegisteringAndSearchTag) {
|
||||
final Set<CompetitorDTO> existingCompetitorsSelected = new HashSet<>();
|
||||
for (final CompetitorDTO existingCompetitor : competitorsForRegisteringAndSearchTag.getA().values()) {
|
||||
if (existingCompetitor != null) {
|
||||
existingCompetitor.addToSearchTag(competitorsForRegisteringAndSearchTag.getB());
|
||||
existingCompetitorsSelected.add(existingCompetitor);
|
||||
}
|
||||
}
|
||||
sailingService.addOrUpdateCompetitor(new ArrayList<>(existingCompetitorsSelected), new MarkedAsyncCallback<>(
|
||||
new AsyncCallback<List<CompetitorDTO>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(caught.getMessage());
|
||||
}
|
||||
@Override
|
||||
public void onSuccess(List<CompetitorDTO> result) {
|
||||
// TODO trigger an update of any client-side competitor display
|
||||
}
|
||||
}));
|
||||
registerCompetitorsAfterSaving(competitorsForRegisteringAndSearchTag.getA().entrySet().stream().filter((e->e.getValue() == null)).map(e->e.getKey()).
|
||||
collect(Collectors.toList()),
|
||||
competitorsForRegisteringAndSearchTag.getA().values(), competitorsForRegisteringAndSearchTag.getB());
|
||||
}
|
||||
|
||||
private void registerCompetitorsAfterSaving(final List<CompetitorDescriptor> competitorsForSaving,
|
||||
final Iterable<CompetitorDTO> competitorsForRegistration, String searchTag) {
|
||||
sailingService.addCompetitors(competitorsForSaving, searchTag, new AsyncCallback<List<CompetitorDTO>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<CompetitorDTO> result) {
|
||||
final Set<CompetitorDTO> competitorsToAddWithNewOnesReplacedBySavedOnesWithId = new HashSet<>();
|
||||
Util.addAll(competitorsForRegistration, competitorsToAddWithNewOnesReplacedBySavedOnesWithId);
|
||||
// remove the locally constructed CompetitorDTOs that had null as their ID...
|
||||
competitorsToAddWithNewOnesReplacedBySavedOnesWithId.removeAll(competitorsForSaving);
|
||||
// ...and replace by those returned by the server after saving to the competitor store where they received an ID:
|
||||
competitorsToAddWithNewOnesReplacedBySavedOnesWithId.addAll(result);
|
||||
registerCompetitors(competitorsToAddWithNewOnesReplacedBySavedOnesWithId);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void registerCompetitors(Set<CompetitorDTO> competitorDTOs) {
|
||||
// Don't register by default
|
||||
}
|
||||
}
|
||||
+211
@@ -0,0 +1,211 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gwt.user.client.ui.CaptionPanel;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ScrollPanel;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.CompetitorDescriptorTableWrapper.CompetitorsToImportToExistingLinking;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
|
||||
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
|
||||
/**
|
||||
* Defines dialog where we can match and choose imported competitors. It mainly consists of two tables: one showing
|
||||
* competitor records coming from an source for import, such as an external regatta management system, and another table
|
||||
* that---upon selecting a single record in the table with the importable records--- displays potentially matching
|
||||
* existing competitors from the server's competitor base. The user can then assemble a set of competitors by first
|
||||
* optionally defining mappings from the importable competitors to existing competitors where instead of creating a new
|
||||
* competitor by means of import the existing one shall be used. Then, the user can make a selection in the table with
|
||||
* the importable competitors, including those for which a mapping to an existing competitor was defined. Pressing OK
|
||||
* will produce a set of {@link CompetitorDTO}s where the ones coming from the set of already existing competitors have
|
||||
* a non-{@code null} {@link CompetitorDTO#getIdAsString() ID} whereas the ones to import have all <em>but</em> an
|
||||
* {@link CompetitorDTO#getIdAsString() ID}.
|
||||
* <p>
|
||||
*
|
||||
* The result is a {@link Map} whose keys are all competitors selected for import and whose values are {@code null}
|
||||
* in case the competitor shall really be imported and hence be created anew, or a valid {@link CompetitorDTO} with
|
||||
* a valid {@link CompetitorDTO#getIdAsString() ID}, representing an already existing competitor that shall be used
|
||||
* instead of the key competitor descriptor.<p>
|
||||
*
|
||||
* Use an {@link ImportCompetitorCallback} or subclass thereof as the {@link DialogCallback} passed to the constructor
|
||||
* for conveniently saving imported competitors to the store using
|
||||
* {@link SailingServiceAsync#addCompetitors(Iterable, com.google.gwt.user.client.rpc.AsyncCallback)}. Define a subclass
|
||||
* thereof and override {@link ImportCompetitorCallback#registerCompetitors(Set)} to determine what should happen with
|
||||
* the set of competitors the user has assembled through this dialog.
|
||||
*
|
||||
* @author Alexander Tatarinovich
|
||||
*
|
||||
*/
|
||||
public class MatchImportedCompetitorsDialog extends DataEntryDialog<Pair<Map<CompetitorDescriptor, CompetitorDTO>, String>> {
|
||||
|
||||
private CompetitorDescriptorTableWrapper<RefreshableMultiSelectionModel<CompetitorDescriptor>> importedCompetitorsTable;
|
||||
private CompetitorTableWrapper<RefreshableSingleSelectionModel<CompetitorDTO>> existingCompetitorsTable;
|
||||
|
||||
private TextBox searchTagField;
|
||||
|
||||
private final StringMessages stringMessages;
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final ErrorReporter errorReporter;
|
||||
|
||||
private final Iterable<CompetitorDescriptor> CompetitorDescriptors;
|
||||
private final CompetitorImportMatcher competitorImportMatcher;
|
||||
|
||||
private final Map<CompetitorDescriptor, CompetitorDTO> existingCompetitorsByImported = new HashMap<>();
|
||||
|
||||
public MatchImportedCompetitorsDialog(final Iterable<CompetitorDescriptor> CompetitorDescriptors,
|
||||
final Iterable<CompetitorDTO> existingCompetitor, StringMessages stringMessages,
|
||||
SailingServiceAsync sailingService, ErrorReporter errorReporter,
|
||||
DialogCallback<Pair<Map<CompetitorDescriptor, CompetitorDTO>, String>> callback) {
|
||||
super(stringMessages.importCompetitors(), stringMessages.chooseWhichCompetitorsShouldBeImported(),
|
||||
stringMessages.ok(), stringMessages.cancel(), /* validator */ null, callback);
|
||||
this.stringMessages = stringMessages;
|
||||
this.sailingService = sailingService;
|
||||
this.errorReporter = errorReporter;
|
||||
this.CompetitorDescriptors = CompetitorDescriptors;
|
||||
competitorImportMatcher = new CompetitorImportMatcher(existingCompetitor);
|
||||
}
|
||||
|
||||
protected void refreshInImportTable(CompetitorDescriptor competitor) {
|
||||
final List<CompetitorDescriptor> importedCompetitors = importedCompetitorsTable.getDataProvider().getList();
|
||||
importedCompetitors.set(importedCompetitors.indexOf(competitor), competitor); // force refresh of line item in table, showing new linkage state
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
existingCompetitorsTable = new CompetitorTableWrapper<>(sailingService, stringMessages,
|
||||
errorReporter, /* multiSelection */
|
||||
false, /* enablePager */true);
|
||||
final CompetitorsToImportToExistingLinking linker = new CompetitorsToImportToExistingLinking() {
|
||||
@Override
|
||||
public void unlinkCompetitor(CompetitorDescriptor competitor) {
|
||||
final CompetitorDTO existingCompetitor = existingCompetitorsByImported.remove(competitor);
|
||||
if (existingCompetitor != null) {
|
||||
existingCompetitorsTable.getSelectionModel().setSelected(existingCompetitor, false);
|
||||
refreshInImportTable(competitor);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompetitorDTO getExistingCompetitorToUseInsteadOf(CompetitorDescriptor competitor) {
|
||||
return existingCompetitorsByImported.get(competitor);
|
||||
}
|
||||
};
|
||||
importedCompetitorsTable = new CompetitorDescriptorTableWrapper<>(competitorImportMatcher, sailingService,
|
||||
stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */false, /* unlinkCallback */ linker);
|
||||
importedCompetitorsTable.refreshCompetitorDescriptorList(CompetitorDescriptors);
|
||||
|
||||
final RefreshableMultiSelectionModel<CompetitorDescriptor> importedCompetitorSelectionModel = importedCompetitorsTable
|
||||
.getSelectionModel();
|
||||
importedCompetitorSelectionModel
|
||||
.addSelectionChangeHandler(getHandlerForImportedCompetitorsModel(importedCompetitorSelectionModel));
|
||||
|
||||
final RefreshableSingleSelectionModel<CompetitorDTO> existingCompetitorSelectionModel = existingCompetitorsTable
|
||||
.getSelectionModel();
|
||||
existingCompetitorSelectionModel.addSelectionChangeHandler(getHandlerForExistingCompetitorsModel(
|
||||
importedCompetitorSelectionModel, existingCompetitorSelectionModel));
|
||||
|
||||
final FlowPanel mainPanel = new FlowPanel();
|
||||
final HorizontalPanel competitorImportPanel = new HorizontalPanel();
|
||||
final CaptionPanel existingCompetitorsPanel = new CaptionPanel(stringMessages.existingCompetitors());
|
||||
final CaptionPanel importedCompetitorsPanel = new CaptionPanel(stringMessages.importedCompetitors());
|
||||
existingCompetitorsPanel.add(existingCompetitorsTable);
|
||||
importedCompetitorsPanel.add(importedCompetitorsTable);
|
||||
|
||||
ScrollPanel scrollCompetitorRegistrationPanel = new ScrollPanel(importedCompetitorsPanel);
|
||||
scrollCompetitorRegistrationPanel.setSize("100%", "500px");
|
||||
ScrollPanel scrollExistingCompetitorRegistrationPanel = new ScrollPanel(existingCompetitorsPanel);
|
||||
scrollCompetitorRegistrationPanel.setSize("100%", "500px");
|
||||
competitorImportPanel.add(scrollCompetitorRegistrationPanel);
|
||||
competitorImportPanel.add(scrollExistingCompetitorRegistrationPanel);
|
||||
searchTagField = createTextBox("", 40);
|
||||
searchTagField.getElement().setPropertyString("placeholder", stringMessages.searchTagForImportedCompetitorPlaceholder());
|
||||
final Label searchTagLabel = new Label(stringMessages.searchTag());
|
||||
final HorizontalPanel searchTagPanel = new HorizontalPanel();
|
||||
searchTagPanel.add(searchTagLabel);
|
||||
searchTagPanel.add(searchTagField);
|
||||
mainPanel.add(searchTagPanel);
|
||||
mainPanel.add(competitorImportPanel);
|
||||
return mainPanel;
|
||||
}
|
||||
|
||||
private Handler getHandlerForExistingCompetitorsModel(
|
||||
final RefreshableMultiSelectionModel<CompetitorDescriptor> importedCompetitorSelectionModel,
|
||||
final RefreshableSingleSelectionModel<CompetitorDTO> existingCompetitorSelectionModel) {
|
||||
return new Handler() {
|
||||
@Override
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
Set<CompetitorDescriptor> competitorDescriptors = importedCompetitorSelectionModel.getSelectedSet();
|
||||
if (competitorDescriptors.size() == 1) {
|
||||
final CompetitorDTO selectedCompetitor = existingCompetitorSelectionModel.getSelectedObject();
|
||||
final CompetitorDescriptor competitorFromImport = competitorDescriptors.iterator().next();
|
||||
final boolean changed;
|
||||
if (selectedCompetitor == null) {
|
||||
changed = existingCompetitorsByImported.remove(competitorFromImport) != null;
|
||||
} else {
|
||||
changed = !Util.equalsWithNull(
|
||||
existingCompetitorsByImported.put(competitorFromImport, selectedCompetitor), selectedCompetitor);
|
||||
}
|
||||
if (changed) {
|
||||
refreshInImportTable(competitorFromImport);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private Handler getHandlerForImportedCompetitorsModel(
|
||||
final RefreshableMultiSelectionModel<CompetitorDescriptor> importedCompetitorSelectionModel) {
|
||||
return new Handler() {
|
||||
private boolean refreshing = false;
|
||||
@Override
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
if (!refreshing) {
|
||||
Set<CompetitorDescriptor> selectedCompetitorDescriptors = importedCompetitorSelectionModel.getSelectedSet();
|
||||
if (selectedCompetitorDescriptors.size() > 1) {
|
||||
existingCompetitorsTable.getFilterField().removeAll();
|
||||
return;
|
||||
}
|
||||
CompetitorDescriptor selectedCompetitorDescriptor = selectedCompetitorDescriptors.isEmpty() ? null
|
||||
: importedCompetitorSelectionModel.getSelectedSet().iterator().next();
|
||||
refreshing = true;
|
||||
try {
|
||||
existingCompetitorsTable.refreshCompetitorList(
|
||||
competitorImportMatcher.getMatchesCompetitors(selectedCompetitorDescriptor));
|
||||
CompetitorDTO competitor = existingCompetitorsByImported.get(selectedCompetitorDescriptor);
|
||||
if (competitor != null && !existingCompetitorsTable.getSelectionModel().isSelected(competitor)) {
|
||||
existingCompetitorsTable.getSelectionModel().setSelected(competitor, true);
|
||||
}
|
||||
} finally {
|
||||
refreshing = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pair<Map<CompetitorDescriptor, CompetitorDTO>, String> getResult() {
|
||||
final Map<CompetitorDescriptor, CompetitorDTO> result = new HashMap<>();
|
||||
for (CompetitorDescriptor competitorDescriptor : importedCompetitorsTable.getSelectionModel().getSelectedSet()) {
|
||||
result.put(competitorDescriptor, existingCompetitorsByImported.get(competitorDescriptor));
|
||||
}
|
||||
return new Pair<>(result, searchTagField.getText());
|
||||
}
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
|
||||
public class RaceImportCompetitorCallback extends ImportCompetitorCallback {
|
||||
private final String leaderboardName;
|
||||
private final String raceColumnName;
|
||||
private final String fleetName;
|
||||
|
||||
public RaceImportCompetitorCallback(String leaderboardName, String raceColumnName, String fleetName,
|
||||
SailingServiceAsync sailingService, ErrorReporter errorReporter, StringMessages stringMessages) {
|
||||
super(sailingService, errorReporter, stringMessages);
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.raceColumnName = raceColumnName;
|
||||
this.fleetName = fleetName;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerCompetitors(Set<CompetitorDTO> competitors) {
|
||||
sailingService.setCompetitorRegistrationsInRaceLog(leaderboardName, raceColumnName, fleetName, competitors,
|
||||
new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(stringMessages.couldNotSaveCompetitorRegistrations(caught.getMessage()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
+19
-2
@@ -1,10 +1,27 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
|
||||
|
||||
/**
|
||||
* The class is used together with the {@link ParallelExecutionHolder} when two or more asynchronous service calls should run in parallel
|
||||
* and only in case all of them has been executed successfully the next action makes sense.
|
||||
* The class is used together with the {@link ParallelExecutionHolder} when two or more asynchronous service calls
|
||||
* should run in parallel and only in case all of them have been executed successfully the next action makes sense.
|
||||
* Instances of this class are first created, then passed to a
|
||||
* {@link ParallelExecutionHolder#ParallelExecutionHolder(ParallelExecutionCallback...)} constructor and can then be
|
||||
* passed as callbacks to GWT RPC method invocations like the regular {@link AsyncCallback} and may also be wrapped by
|
||||
* {@link MarkedAsyncCallback} objects. The {@link #onSuccess(Object)} method tells the {@link ParallelExecutionHolder}
|
||||
* to which this callback is submitted that the call succeeded. If that was the last outstanding callback then the
|
||||
* {@link ParallelExecutionHolder} will subsequently invoke its {@link ParallelExecutionHolder#handleSuccess()} method.
|
||||
* <p>
|
||||
*
|
||||
* Should this callback receive an {@link #onFailure(Throwable)} call then the
|
||||
* {@link ParallelExecutionHolder#handleFailure(Throwable)} method will be called. When this happens for at least one of
|
||||
* the callbacks registered with the {@link ParallelExecutionHolder} then the
|
||||
* {@link ParallelExecutionHolder#handleSuccess()} method will not be called.
|
||||
* <p>
|
||||
*
|
||||
* In case of subclassing and overriding this class's default implementations of {@link #onSuccess(Object)} the subclass
|
||||
* implementation must invoke {@code super.onSuccess(t)} at some point during method execution.
|
||||
*/
|
||||
public class ParallelExecutionCallback<T> implements AsyncCallback<T> {
|
||||
|
||||
|
||||
+13
@@ -1,5 +1,18 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
|
||||
/**
|
||||
* Triggers the {@link #handleSuccess()} method after all {@link ParallelExecutionCallback}s that were passed to the
|
||||
* constructor have received their {@link AsyncCallback#onSuccess(Object)} call. All {@link ParallelExecutionCallback#onFailure(Throwable)}
|
||||
* callback will lead to the {@link #handleFailure(Throwable)} method being called.<p>
|
||||
*
|
||||
* After creating the {@link ParallelExecutionCallback} objects and passing them to this class's constructor,
|
||||
* use them as regular callback objects in the GWT RPC service method invocations.
|
||||
*
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public abstract class ParallelExecutionHolder {
|
||||
|
||||
/** The number of successfully completed services */
|
||||
|
||||
+16
-1
@@ -11,6 +11,7 @@ import java.util.UUID;
|
||||
import com.google.gwt.user.client.rpc.RemoteService;
|
||||
import com.sap.sailing.domain.abstractlog.Revokable;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.DataImportProgress;
|
||||
import com.sap.sailing.domain.common.DetailType;
|
||||
import com.sap.sailing.domain.common.LeaderboardType;
|
||||
@@ -34,6 +35,7 @@ import com.sap.sailing.domain.common.dto.BoatDTO;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
import com.sap.sailing.domain.common.dto.IncrementalOrFullLeaderboardDTO;
|
||||
import com.sap.sailing.domain.common.dto.PersonDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnInSeriesDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceDTO;
|
||||
@@ -52,6 +54,7 @@ import com.sap.sailing.gwt.ui.client.shared.charts.MarkPositionService.MarkTrack
|
||||
import com.sap.sailing.gwt.ui.shared.BulkScoreCorrectionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompactBoatPositionsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompactRaceMapDataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompetitorProviderDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompetitorsRaceDataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ControlPointDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CoursePositionsDTO;
|
||||
@@ -94,6 +97,7 @@ import com.sap.sailing.gwt.ui.shared.TypedDeviceMappingDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.VenueDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO;
|
||||
import com.sap.sse.common.CountryCode;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.NoCorrespondingServiceRegisteredException;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
@@ -342,6 +346,13 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
|
||||
|
||||
void updateLeaderboardScoreCorrectionsAndMaxPointsReasons(BulkScoreCorrectionDTO updates) throws NoWindException;
|
||||
|
||||
Iterable<String> getCompetitorProviderNames();
|
||||
|
||||
CompetitorProviderDTO getCompetitorProviderDTOByName(String providerName) throws Exception;
|
||||
|
||||
List<CompetitorDescriptor> getCompetitorDescriptors(String competitorProviderName, String eventName,
|
||||
String regattaName) throws Exception;
|
||||
|
||||
WindInfoForRaceDTO getWindSourcesInfo(RegattaAndRaceIdentifier raceIdentifier);
|
||||
|
||||
ServerInfoDTO getServerInfo();
|
||||
@@ -434,8 +445,10 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
|
||||
|
||||
Iterable<CompetitorDTO> getCompetitorsOfLeaderboard(String leaderboardName);
|
||||
|
||||
CompetitorDTO addOrUpdateCompetitor(CompetitorDTO competitor) throws Exception;
|
||||
List<CompetitorDTO> addOrUpdateCompetitor(List<CompetitorDTO> competitors) throws Exception;
|
||||
|
||||
List<CompetitorDTO> addCompetitors(List<CompetitorDescriptor> competitorsForSaving, String searchTag) throws Exception;
|
||||
|
||||
void allowCompetitorResetToDefaults(Iterable<CompetitorDTO> competitors);
|
||||
|
||||
List<DeviceConfigurationMatcherDTO> getDeviceConfigurationMatchers();
|
||||
@@ -666,4 +679,6 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
|
||||
void editMarkFix(String leaderboardName, String raceColumnName, String fleetName, String markIdAsString, GPSFixDTO oldFix, Position newPosition) throws NotRevokableException;
|
||||
|
||||
Map<Triple<String, String, String>, Pair<TimePointSpecificationFoundInLog, TimePointSpecificationFoundInLog>> getTrackingTimes(Collection<Triple<String, String, String>> raceColumnsAndFleets);
|
||||
|
||||
Pair<PersonDTO, CountryCode> makePersonDTOSerializableAndDeserializableDummy(PersonDTO dummy, CountryCode ccDummy);
|
||||
}
|
||||
+17
-1
@@ -9,6 +9,7 @@ import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.DataImportProgress;
|
||||
import com.sap.sailing.domain.common.DetailType;
|
||||
import com.sap.sailing.domain.common.LeaderboardType;
|
||||
@@ -29,6 +30,7 @@ import com.sap.sailing.domain.common.dto.BoatDTO;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
import com.sap.sailing.domain.common.dto.IncrementalOrFullLeaderboardDTO;
|
||||
import com.sap.sailing.domain.common.dto.PersonDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnInSeriesDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceDTO;
|
||||
@@ -41,6 +43,7 @@ import com.sap.sailing.gwt.ui.client.shared.charts.MarkPositionService.MarkTrack
|
||||
import com.sap.sailing.gwt.ui.shared.BulkScoreCorrectionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompactBoatPositionsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompactRaceMapDataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompetitorProviderDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompetitorsRaceDataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ControlPointDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CoursePositionsDTO;
|
||||
@@ -84,6 +87,7 @@ import com.sap.sailing.gwt.ui.shared.TypedDeviceMappingDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.VenueDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO;
|
||||
import com.sap.sse.common.CountryCode;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
@@ -463,6 +467,12 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
|
||||
void getScoreCorrections(String scoreCorrectionProviderName, String eventName, String boatClassName,
|
||||
Date timePointWhenResultPublished, AsyncCallback<RegattaScoreCorrectionDTO> asyncCallback);
|
||||
|
||||
void getCompetitorProviderNames(AsyncCallback<Iterable<String>> callback);
|
||||
|
||||
void getCompetitorProviderDTOByName(String providerName, AsyncCallback<CompetitorProviderDTO> callback);
|
||||
|
||||
void getCompetitorDescriptors(String competitorProviderName, String eventName, String regattaName, AsyncCallback<List<CompetitorDescriptor>> callback);
|
||||
|
||||
void getWindSourcesInfo(RegattaAndRaceIdentifier raceIdentifier, AsyncCallback<WindInfoForRaceDTO> callback);
|
||||
|
||||
void getRaceCourse(RegattaAndRaceIdentifier raceIdentifier, Date date, AsyncCallback<RaceCourseDTO> callback);
|
||||
@@ -586,7 +596,10 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
|
||||
|
||||
void getCompetitorsOfLeaderboard(String leaderboardName, AsyncCallback<Iterable<CompetitorDTO>> asyncCallback);
|
||||
|
||||
void addOrUpdateCompetitor(CompetitorDTO competitor, AsyncCallback<CompetitorDTO> asyncCallback);
|
||||
void addOrUpdateCompetitor(List<CompetitorDTO> competitors, AsyncCallback<List<CompetitorDTO>> asyncCallback);
|
||||
|
||||
void addCompetitors(List<CompetitorDescriptor> competitorsForSaving, String searchTag,
|
||||
AsyncCallback<List<CompetitorDTO>> asyncCallback);
|
||||
|
||||
void allowCompetitorResetToDefaults(Iterable<CompetitorDTO> competitors, AsyncCallback<Void> asyncCallback);
|
||||
|
||||
@@ -812,4 +825,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
|
||||
|
||||
void getTrackingTimes(Collection<Triple<String, String, String>> raceColumnsAndFleets,
|
||||
AsyncCallback<Map<Triple<String, String, String>, Pair<TimePointSpecificationFoundInLog, TimePointSpecificationFoundInLog>>> asyncCallback);
|
||||
|
||||
void makePersonDTOSerializableAndDeserializableDummy(PersonDTO dummy, CountryCode ccDummy,
|
||||
AsyncCallback<Pair<PersonDTO, CountryCode>> callback);
|
||||
}
|
||||
+11
@@ -1576,6 +1576,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String mapControls();
|
||||
String manage2SailEvent();
|
||||
String noEventsYet();
|
||||
String selectCompetitorImportProvider();
|
||||
String selectResultImportProvider();
|
||||
String buildVersion();
|
||||
String serverInformation();
|
||||
@@ -1749,4 +1750,14 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String externalLinks();
|
||||
String buoyZoneRadiusInHullLengths();
|
||||
String incorrectValueForRegattaBuoyZoneRadiusInHullLengths();
|
||||
String importCompetitors();
|
||||
String chooseWhichCompetitorsShouldBeImported();
|
||||
String existingCompetitors();
|
||||
String importedCompetitors();
|
||||
String hasMatches();
|
||||
String filterImportedCompetitorsByNameSailRaceFleet();
|
||||
String errorLoadingCompetitorImportProviders(String message);
|
||||
String errorLoadingCompetitorImportDescriptors(String message);
|
||||
String couldNotSaveCompetitorRegistrations(String message);
|
||||
String searchTagForImportedCompetitorPlaceholder();
|
||||
}
|
||||
+11
@@ -1537,6 +1537,7 @@ dragToChangePosition=Drag to change position\nRight-click to get menu to delete
|
||||
moveFix=Move fix
|
||||
manage2SailEvent=Manage2Sail Event
|
||||
noEventsYet=There are no events yet.
|
||||
selectCompetitorImportProvider=Please select a competitor import provider...
|
||||
selectResultImportProvider=Please select a result import provider...
|
||||
buildVersion=Build version
|
||||
serverInformation=Server Information
|
||||
@@ -1721,3 +1722,13 @@ filterDeviceMappings=Filter device mappings
|
||||
raceStartAnalysis=Race Start Analysis
|
||||
buoyZoneRadiusInHullLengths=Buoy zone radius in hull lengths (e.g., 2 or 3)
|
||||
incorrectValueForRegattaBuoyZoneRadiusInHullLengths=Incorrect value for the buoy zone radius in hull lengths
|
||||
importCompetitors=Import Competitors
|
||||
chooseWhichCompetitorsShouldBeImported=Select competitors to be imported on the left. Selecting a single competitor shows any existing competitors that may represent the same entity on the right. To use an existing one, select it. When done mapping, select all competitors you want to import in the table on the left and press OK. Note that the tables can be sorted by clicking or tapping on the column headers.
|
||||
existingCompetitors=Existing Competitors
|
||||
importedCompetitors=Competitors to Import
|
||||
hasMatches=Has matches
|
||||
filterImportedCompetitorsByNameSailRaceFleet=Filter competitors to import by name, sail number, race or fleet
|
||||
errorLoadingCompetitorImportProviders=Error loading competitor import providers: {0}
|
||||
errorLoadingCompetitorImportDescriptors=Error loading competitor import descriptors: {0}
|
||||
couldNotSaveCompetitorRegistrations=Could not save competitor registrations: {0}
|
||||
searchTagForImportedCompetitorPlaceholder=Use, e.g., the race+fleet name
|
||||
+12
-1
@@ -1523,6 +1523,7 @@ moveFix=Position durch Ziehen ändern
|
||||
manage2SailEvent=Manage2Sail Veranstaltung
|
||||
noEventsYet=Es sind keine Veranstaltungen vorhanden.
|
||||
selectResultImportProvider=Bitte wählen Sie einen Ergebnisdienst aus...
|
||||
selectCompetitorImportProvider=Bitte wählen Sie einen Dienst für den Import von Teilnehmerdaten aus...
|
||||
buildVersion=Build-Version
|
||||
serverInformation=Server-Information
|
||||
serverConfiguration=Server-Konfiguration
|
||||
@@ -1705,4 +1706,14 @@ lastFix=Letzter Fix
|
||||
filterDeviceMappings=Gerätezuordnungen filtern
|
||||
raceStartAnalysis=Startanalyse
|
||||
buoyZoneRadiusInHullLengths=Anzahl Bootslängen für Bahnmarkenkreis (z.B. 2 oder 3)
|
||||
incorrectValueForRegattaBuoyZoneRadiusInHullLengths=Ungültiger WErt für den Bootslängen-Bahnmarkenkreis
|
||||
incorrectValueForRegattaBuoyZoneRadiusInHullLengths=Ungültiger Wert für den Bootslängen-Bahnmarkenkreis
|
||||
importCompetitors=Teilnehmerdaten importieren
|
||||
chooseWhichCompetitorsShouldBeImported=Zu importierende Teilnehmer links auswählen. Einzeln auswählen, falls ähnliche Teilnehmer bereits vorhanden sind. Diese werden dann rechts angezeigt, wovon einer ausgewählt werden kann, um diesen zu verwenden statt einen neuen anzulegen. Wenn die Auswahl vorhandener Teilnehmer abgeschlossen ist, links alle zu importierenden Teilnehmer auswählen und OK wählen. Tipp: Beide Tabellen können über die Spaltenköpfe sortiert werden.
|
||||
existingCompetitors=Bestehende Teilnehmer
|
||||
importedCompetitors=Zu importierende Teilnehmer
|
||||
hasMatches=ähnliche vorhanden
|
||||
filterImportedCompetitorsByNameSailRaceFleet=Zu importierende Teilnehmer filtern nach Name, Segelnummer, Wettfahrt oder Gruppe
|
||||
errorLoadingCompetitorImportProviders=Fehler beim Laden der Quellen für den Teilnehmerdaten-Import: {0}
|
||||
errorLoadingCompetitorImportDescriptors=Fehler beim Laden der zu importierenden Teilnehmerdaten: {0}
|
||||
couldNotSaveCompetitorRegistrations=Teilnehmerregistrierung konnte nicht gespeichert werden: {0}
|
||||
searchTagForImportedCompetitorPlaceholder=Z.B. Renn- und Gruppenname
|
||||
+125
-32
@@ -55,6 +55,7 @@ import org.osgi.framework.InvalidSyntaxException;
|
||||
import org.osgi.framework.ServiceReference;
|
||||
import org.osgi.util.tracker.ServiceTracker;
|
||||
|
||||
import com.sap.sailing.competitorimport.CompetitorProvider;
|
||||
import com.sap.sailing.domain.abstractlog.AbstractLog;
|
||||
import com.sap.sailing.domain.abstractlog.AbstractLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.impl.AllEventsOfTypeFinder;
|
||||
@@ -132,6 +133,7 @@ import com.sap.sailing.domain.base.configuration.impl.RegattaConfigurationImpl;
|
||||
import com.sap.sailing.domain.base.configuration.impl.SWCStartConfigurationImpl;
|
||||
import com.sap.sailing.domain.base.configuration.procedures.ConfigurableStartModeFlagRacingProcedureConfiguration;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.CompetitorImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseDataImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
@@ -144,6 +146,7 @@ import com.sap.sailing.domain.base.impl.SailingServerConfigurationImpl;
|
||||
import com.sap.sailing.domain.base.impl.SeriesImpl;
|
||||
import com.sap.sailing.domain.base.impl.TeamImpl;
|
||||
import com.sap.sailing.domain.common.Bearing;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.CourseDesignerMode;
|
||||
import com.sap.sailing.domain.common.DataImportProgress;
|
||||
import com.sap.sailing.domain.common.DataImportSubProgress;
|
||||
@@ -191,6 +194,7 @@ import com.sap.sailing.domain.common.dto.FullLeaderboardDTO;
|
||||
import com.sap.sailing.domain.common.dto.IncrementalLeaderboardDTO;
|
||||
import com.sap.sailing.domain.common.dto.IncrementalOrFullLeaderboardDTO;
|
||||
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
|
||||
import com.sap.sailing.domain.common.dto.PersonDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTOFactory;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnInSeriesDTO;
|
||||
@@ -305,6 +309,7 @@ import com.sap.sailing.gwt.ui.client.shared.charts.MarkPositionService.MarkTrack
|
||||
import com.sap.sailing.gwt.ui.shared.BulkScoreCorrectionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompactBoatPositionsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompactRaceMapDataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompetitorProviderDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompetitorRaceDataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompetitorsRaceDataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ControlPointDTO;
|
||||
@@ -510,6 +515,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
|
||||
private final ServiceTracker<ScoreCorrectionProvider, ScoreCorrectionProvider> scoreCorrectionProviderServiceTracker;
|
||||
|
||||
private final ServiceTracker<CompetitorProvider, CompetitorProvider> competitorProviderServiceTracker;
|
||||
|
||||
private final MongoObjectFactory mongoObjectFactory;
|
||||
|
||||
private final SwissTimingAdapterPersistence swissTimingAdapterPersistence;
|
||||
@@ -586,6 +593,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
/* raceLogResolver */ getService());
|
||||
scoreCorrectionProviderServiceTracker = ServiceTrackerFactory.createAndOpen(context,
|
||||
ScoreCorrectionProvider.class);
|
||||
competitorProviderServiceTracker = ServiceTrackerFactory.createAndOpen(context, CompetitorProvider.class);
|
||||
tractracDomainObjectFactory = com.sap.sailing.domain.tractracadapter.persistence.PersistenceFactory.INSTANCE
|
||||
.createDomainObjectFactory(mongoObjectFactory.getDatabase(), getTracTracAdapter()
|
||||
.getTracTracDomainFactory());
|
||||
@@ -662,11 +670,11 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
}
|
||||
|
||||
private Iterable<ScoreCorrectionProvider> getAllScoreCorrectionProviders() {
|
||||
final Object[] services = scoreCorrectionProviderServiceTracker.getServices();
|
||||
final ScoreCorrectionProvider[] services = scoreCorrectionProviderServiceTracker.getServices(new ScoreCorrectionProvider[0]);
|
||||
List<ScoreCorrectionProvider> result = new ArrayList<ScoreCorrectionProvider>();
|
||||
if (services != null) {
|
||||
for (Object service : services) {
|
||||
result.add((ScoreCorrectionProvider) service);
|
||||
for (final ScoreCorrectionProvider service : services) {
|
||||
result.add(service);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@@ -686,6 +694,53 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
return new ScoreCorrectionProviderDTO(scoreCorrectionProvider.getName(), hasResultsForBoatClassFromDateByEventName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<String> getCompetitorProviderNames() {
|
||||
List<String> result = new ArrayList<>();
|
||||
for (CompetitorProvider competitorProvider : getAllCompetitorProviders()) {
|
||||
result.add(competitorProvider.getName());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private Iterable<CompetitorProvider> getAllCompetitorProviders() {
|
||||
final CompetitorProvider[] services = competitorProviderServiceTracker.getServices(new CompetitorProvider[0]);
|
||||
List<CompetitorProvider> result = new ArrayList<>();
|
||||
if (services != null) {
|
||||
for (final CompetitorProvider service : services) {
|
||||
result.add(service);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompetitorProviderDTO getCompetitorProviderDTOByName(String providerName) throws Exception {
|
||||
for (CompetitorProvider competitorProvider : getAllCompetitorProviders()) {
|
||||
if (competitorProvider.getName().equals(providerName)) {
|
||||
return new CompetitorProviderDTO(competitorProvider.getName(),
|
||||
new HashMap<>(competitorProvider.getHasCompetitorsForRegattasInEvent()));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CompetitorDescriptor> getCompetitorDescriptors(String competitorProviderName, String eventName,
|
||||
String regattaName) throws Exception {
|
||||
for (CompetitorProvider cp : getAllCompetitorProviders()) {
|
||||
if (cp.getName().equals(competitorProviderName)) {
|
||||
final List<CompetitorDescriptor> result = new ArrayList<>();
|
||||
Util.addAll(cp.getCompetitorDescriptors(eventName, regattaName), result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pair<PersonDTO, CountryCode> makePersonDTOSerializableAndDeserializableDummy(PersonDTO dummy, CountryCode ccDummy) { return null; }
|
||||
|
||||
/**
|
||||
* If <code>date</code> is <code>null</code>, the {@link LiveLeaderboardUpdater} for the
|
||||
* <code>leaderboardName</code> requested is obtained or created if it doesn't exist yet. The request is then passed
|
||||
@@ -1483,7 +1538,6 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
polarDiagram = new PolarDiagramGPS(boatClass, polarData);
|
||||
} catch (SparseSimulationDataException e) {
|
||||
polarDiagram = null;
|
||||
// TODO: raise a UI message, to inform user about missing polar data resulting in unability to simulate
|
||||
}
|
||||
result = polarDiagram != null;
|
||||
}
|
||||
@@ -4748,35 +4802,74 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompetitorDTO addOrUpdateCompetitor(CompetitorDTO competitor) throws URISyntaxException {
|
||||
Competitor existingCompetitor = getService().getCompetitorStore().getExistingCompetitorByIdAsString(competitor.getIdAsString());
|
||||
Nationality nationality = (competitor.getThreeLetterIocCountryCode() == null || competitor.getThreeLetterIocCountryCode().isEmpty()) ? null :
|
||||
getBaseDomainFactory().getOrCreateNationality(competitor.getThreeLetterIocCountryCode());
|
||||
final CompetitorDTO result;
|
||||
// new competitor
|
||||
if (competitor.getIdAsString() == null || competitor.getIdAsString().isEmpty() || existingCompetitor == null) {
|
||||
BoatClass boatClass = getBaseDomainFactory().getOrCreateBoatClass(competitor.getBoatClass().getName());
|
||||
DynamicPerson sailor = new PersonImpl(competitor.getName(), nationality, null, null);
|
||||
DynamicTeam team = new TeamImpl(competitor.getName() + " team", Collections.singleton(sailor), null);
|
||||
DynamicBoat boat = new BoatImpl(competitor.getName() + " boat", boatClass, competitor.getSailID());
|
||||
result = getBaseDomainFactory().convertToCompetitorDTO(
|
||||
getBaseDomainFactory().getOrCreateCompetitor(UUID.randomUUID(), competitor.getName(),
|
||||
competitor.getColor(), competitor.getEmail(),
|
||||
competitor.getFlagImageURL() == null ? null : new URI(competitor.getFlagImageURL()), team, boat,
|
||||
competitor.getTimeOnTimeFactor(),
|
||||
competitor.getTimeOnDistanceAllowancePerNauticalMile(), competitor.getSearchTag()));
|
||||
} else {
|
||||
result = getBaseDomainFactory().convertToCompetitorDTO(
|
||||
getService().apply(
|
||||
new UpdateCompetitor(competitor.getIdAsString(), competitor.getName(), competitor
|
||||
.getColor(), competitor.getEmail(), competitor.getSailID(), nationality,
|
||||
competitor.getImageURL() == null ? null : new URI(competitor.getImageURL()),
|
||||
competitor.getFlagImageURL() == null ? null : new URI(competitor.getFlagImageURL()),
|
||||
competitor.getTimeOnTimeFactor(),
|
||||
competitor.getTimeOnDistanceAllowancePerNauticalMile(),
|
||||
competitor.getSearchTag())));
|
||||
public List<CompetitorDTO> addOrUpdateCompetitor(List<CompetitorDTO> competitors) throws URISyntaxException {
|
||||
final List<CompetitorDTO> results = new ArrayList<>();
|
||||
for (final CompetitorDTO competitor : competitors) {
|
||||
Competitor existingCompetitor = getService().getCompetitorStore().getExistingCompetitorByIdAsString(competitor.getIdAsString());
|
||||
Nationality nationality = (competitor.getThreeLetterIocCountryCode() == null
|
||||
|| competitor.getThreeLetterIocCountryCode().isEmpty()) ? null
|
||||
: getBaseDomainFactory().getOrCreateNationality(competitor.getThreeLetterIocCountryCode());
|
||||
final CompetitorDTO result;
|
||||
// new competitor
|
||||
if (competitor.getIdAsString() == null || competitor.getIdAsString().isEmpty() || existingCompetitor == null) {
|
||||
BoatClass boatClass = getBaseDomainFactory().getOrCreateBoatClass(competitor.getBoatClass().getName());
|
||||
DynamicPerson sailor = new PersonImpl(competitor.getName(), nationality, null, null);
|
||||
DynamicTeam team = new TeamImpl(competitor.getName() + " team", Collections.singleton(sailor), null);
|
||||
DynamicBoat boat = new BoatImpl(competitor.getName() + " boat", boatClass, competitor.getSailID());
|
||||
result = getBaseDomainFactory().convertToCompetitorDTO(
|
||||
getBaseDomainFactory().getOrCreateCompetitor(UUID.randomUUID(), competitor.getName(),
|
||||
competitor.getColor(), competitor.getEmail(),
|
||||
competitor.getFlagImageURL() == null ? null : new URI(competitor.getFlagImageURL()), team, boat,
|
||||
competitor.getTimeOnTimeFactor(),
|
||||
competitor.getTimeOnDistanceAllowancePerNauticalMile(), competitor.getSearchTag()));
|
||||
} else {
|
||||
result = getBaseDomainFactory().convertToCompetitorDTO(
|
||||
getService().apply(
|
||||
new UpdateCompetitor(competitor.getIdAsString(), competitor.getName(), competitor
|
||||
.getColor(), competitor.getEmail(), competitor.getSailID(), nationality,
|
||||
competitor.getImageURL() == null ? null : new URI(competitor.getImageURL()),
|
||||
competitor.getFlagImageURL() == null ? null : new URI(competitor.getFlagImageURL()),
|
||||
competitor.getTimeOnTimeFactor(),
|
||||
competitor.getTimeOnDistanceAllowancePerNauticalMile(),
|
||||
competitor.getSearchTag())));
|
||||
}
|
||||
results.add(result);
|
||||
}
|
||||
return result;
|
||||
return results;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CompetitorDTO> addCompetitors(List<CompetitorDescriptor> competitorDescriptors, String searchTag) throws URISyntaxException {
|
||||
List<Competitor> competitorsForSaving = new ArrayList<>();
|
||||
for (final CompetitorDescriptor competitorDescriptor : competitorDescriptors) {
|
||||
Competitor competitor = convertCompetitorDescriptorToCompetitor(competitorDescriptor, searchTag);
|
||||
competitorsForSaving.add(competitor);
|
||||
}
|
||||
getBaseDomainFactory().getCompetitorStore().addCompetitors(competitorsForSaving);
|
||||
return convertToCompetitorDTOs(competitorsForSaving);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@link Competitor} object from a {@link CompetitorDescriptor} with a new random {@link UUID}.
|
||||
*
|
||||
* @param searchTag
|
||||
* set as the {@link Competitor#getSearchTag() searchTag} property of all new competitors
|
||||
*/
|
||||
private Competitor convertCompetitorDescriptorToCompetitor(CompetitorDescriptor competitorDescriptor, String searchTag) throws URISyntaxException {
|
||||
Nationality nationality = (competitorDescriptor.getCountryCode() == null
|
||||
|| competitorDescriptor.getCountryCode().getThreeLetterIOCCode() == null
|
||||
|| competitorDescriptor.getCountryCode().getThreeLetterIOCCode().isEmpty()) ? null
|
||||
: getBaseDomainFactory().getOrCreateNationality(competitorDescriptor.getCountryCode().getThreeLetterIOCCode());
|
||||
BoatClass boatClass = getBaseDomainFactory().getOrCreateBoatClass(competitorDescriptor.getBoatClassName());
|
||||
DynamicPerson sailor = new PersonImpl(competitorDescriptor.getName(), nationality, null, null);
|
||||
DynamicTeam team = new TeamImpl(competitorDescriptor.getName(), Collections.singleton(sailor), null);
|
||||
DynamicBoat boat = new BoatImpl(competitorDescriptor.getSailNumber(), boatClass, competitorDescriptor.getSailNumber());
|
||||
Competitor competitor = new CompetitorImpl(UUID.randomUUID(), competitorDescriptor.getName(),
|
||||
/* color */ null, /* eMail */ null,
|
||||
/* flag image */ null, team,
|
||||
boat, competitorDescriptor.getTimeOnTimeFactor(),
|
||||
competitorDescriptor.getTimeOnDistanceAllowancePerNauticalMile(), searchTag);
|
||||
return competitor;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package com.sap.sailing.gwt.ui.shared;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import com.sap.sailing.domain.common.dto.NamedDTO;
|
||||
|
||||
public class CompetitorProviderDTO extends NamedDTO {
|
||||
private static final long serialVersionUID = -8911619278385485713L;
|
||||
|
||||
private Map<String, Set<String>> hasCompetitorsForRegattasInEvent;
|
||||
|
||||
public CompetitorProviderDTO() {
|
||||
}
|
||||
|
||||
public CompetitorProviderDTO(String name, Map<String, Set<String>> hasCompetitorsForRegattasInEvent) {
|
||||
super(name);
|
||||
this.hasCompetitorsForRegattasInEvent = hasCompetitorsForRegattasInEvent;
|
||||
}
|
||||
|
||||
public Map<String, Set<String>> getHasCompetitorsForRegattasInEvent() {
|
||||
return hasCompetitorsForRegattasInEvent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = super.hashCode();
|
||||
result = prime * result + Objects.hash(hasCompetitorsForRegattasInEvent);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
if (!super.equals(obj)) {
|
||||
return false;
|
||||
}
|
||||
CompetitorProviderDTO other = (CompetitorProviderDTO) obj;
|
||||
return Objects.equals(hasCompetitorsForRegattasInEvent, other.hasCompetitorsForRegattasInEvent);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"Id":"17733a60-305c-4142-98ef-40423449f3be","Name":"IDJM 2015 - 420er","XrrUrl":"http://manage2sail.com/en-US/Home/DownloadXrr/event/17733a60-305c-4142-98ef-40423449f3be/regatta","Regattas":[{"Id":"cd23aa66-81bc-4ae3-ba36-fa03446762b1","Name":"420","Gender":"Open","ClassName":"420","PdfUrl":"","XrrEntriesUrl":"file:./bin/VSaW_420_Test.xml","XrrPreliminaryUrl":"http://manage2sail.com/en-US/Home/DownloadXrr/event/17733a60-305c-4142-98ef-40423449f3be/regatta/cd23aa66-81bc-4ae3-ba36-fa03446762b1?xrrType=PreliminaryResults","XrrFinalUrl":"http://manage2sail.com/en-US/Home/DownloadXrr/event/17733a60-305c-4142-98ef-40423449f3be/regatta/cd23aa66-81bc-4ae3-ba36-fa03446762b1?xrrType=FinalResults","HtmlUrl":"http://manage2sail.com/en-US/Home/ResultsFragment/event/17733a60-305c-4142-98ef-40423449f3be/regatta/cd23aa66-81bc-4ae3-ba36-fa03446762b1"}]}
|
||||
@@ -0,0 +1,830 @@
|
||||
<SailingXRR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.sailing.org/uploads/xml/sailingXRR_v1.3.xsd" Date="2015-09-24+02:00" Time="17:59:49+02:00" Type="SailingXRR" Version="1.3.1">
|
||||
<Person PersonID="4dd872be-c74f-4ec5-907d-1ef72d355a02" IFPersonID="" FamilyName="HEINBÜCHER" GivenName="Markus" NOC="" Gender="Male" />
|
||||
<Person PersonID="917dd02f-f285-47e7-aaae-74c15d464b76" IFPersonID="" FamilyName="WALKEMBACH" GivenName="Benedikt" NOC="" Gender="Male" />
|
||||
<Person PersonID="0ca62ba5-bc73-444d-85bb-3dd9de60974e" IFPersonID="" FamilyName="HOFMANN" GivenName="Kai-Steffen" NOC="" Gender="Male" />
|
||||
<Person PersonID="8530bea0-24b3-4777-92fc-0203b1768404" IFPersonID="" FamilyName="TAST" GivenName="Valentina" NOC="" Gender="Female" />
|
||||
<Person PersonID="fbd25e61-eae8-4eb4-8a33-963447feee5c" IFPersonID="" FamilyName="LEMBCKE" GivenName="Tom" NOC="" Gender="Male" />
|
||||
<Person PersonID="130158cb-8024-41a4-ad61-880dd7ae1bd6" IFPersonID="" FamilyName="STEIDLE" GivenName="Konstantin" NOC="" Gender="Male" />
|
||||
<Person PersonID="05074078-d6fb-4ecc-90b9-14651bc6b3c5" IFPersonID="" FamilyName="BRAUN-DULLAEUS" GivenName="Julius" NOC="" Gender="Male" />
|
||||
<Person PersonID="1f2411fc-7a3e-46c3-b8cb-3b86d9c70272" IFPersonID="" FamilyName="STRUCHHOLZ" GivenName="Janek" NOC="" Gender="Male" />
|
||||
<Person PersonID="6233565e-45f7-443f-9d76-f5f700120b55" IFPersonID="" FamilyName="SPRANDEL" GivenName="Isabel" NOC="" Gender="Female" />
|
||||
<Person PersonID="2d7fd320-2502-4289-8157-6f0506816452" IFPersonID="" FamilyName="THORNS" GivenName="Lynn" NOC="" Gender="Female" />
|
||||
<Person PersonID="88fddbd9-a504-4eee-bf0d-e5c1fb2062aa" IFPersonID="" FamilyName="FRÖHLICH" GivenName="Klara" NOC="" Gender="Female" />
|
||||
<Person PersonID="e06bd015-7ede-477a-be0a-7a647950a64f" IFPersonID="" FamilyName="SCHENK" GivenName="Johanna" NOC="" Gender="Female" />
|
||||
<Person PersonID="3e747152-c43a-4daf-8f2e-3292ac0a941a" IFPersonID="" FamilyName="MÜLLER" GivenName="Arvid Jannes" NOC="" Gender="Male" />
|
||||
<Person PersonID="7ddb8f8f-ae44-4d7e-b3a5-a181479e38f5" IFPersonID="" FamilyName="MÜLLER" GivenName="Jolanda Lene" NOC="" Gender="Female" />
|
||||
<Person PersonID="0483b94c-4120-43ce-b561-e7d6358450bf" IFPersonID="" FamilyName="PORTHUN" GivenName="Jonas" NOC="" Gender="Male" />
|
||||
<Person PersonID="a9c04df6-f3c7-49eb-b744-3d78659365ba" IFPersonID="" FamilyName="KRÖPLIN" GivenName="Henning" NOC="" Gender="Male" />
|
||||
<Person PersonID="029c5b9c-333b-4da3-ae78-f0f72923360c" IFPersonID="" FamilyName="RICHLY" GivenName="Marc" NOC="" Gender="Male" />
|
||||
<Person PersonID="e0e4c917-2d16-436d-b718-ed65a1579a81" IFPersonID="" FamilyName="KENTER" GivenName="Finn" NOC="" Gender="Male" />
|
||||
<Person PersonID="d6af23bc-f4f1-404e-b948-fbd4f069cb02" IFPersonID="" FamilyName="SCHLOSSER" GivenName="Otto" NOC="" Gender="Male" />
|
||||
<Person PersonID="f9ddd1e8-d1a7-433f-8036-251508b4d5fe" IFPersonID="" FamilyName="SCHÄFER" GivenName="Analea" NOC="" Gender="Female" />
|
||||
<Person PersonID="fcab0d54-1a4d-4b23-8ac9-fc8d0b290787" IFPersonID="" FamilyName="WILLMS" GivenName="Nele Marie" NOC="" Gender="Female" />
|
||||
<Person PersonID="575535a5-26ea-4443-acc7-b35e2781a4f7" IFPersonID="" FamilyName="KRAMER" GivenName="Maximilian" NOC="" Gender="Male" />
|
||||
<Person PersonID="55cb2f7c-46e2-48f8-9b34-f0517361d6fb" IFPersonID="" FamilyName="KÖHLER" GivenName="Marius" NOC="" Gender="Male" />
|
||||
<Person PersonID="ab2f32ce-c4c1-4634-a265-9f320d9cb017" IFPersonID="" FamilyName="KÖHLER" GivenName="Jessica" NOC="" Gender="Female" />
|
||||
<Person PersonID="418b9db9-6eac-4c77-9611-5d86ccd495b1" IFPersonID="" FamilyName="PINNOW" GivenName="Fritz" NOC="" Gender="Male" />
|
||||
<Person PersonID="d6a8d063-354a-401d-a966-342de8118fe7" IFPersonID="" FamilyName="SCHLÜTER" GivenName="Lucas" NOC="" Gender="Male" />
|
||||
<Person PersonID="b7f22693-a0b5-4c67-9b6b-28fb39cf7ff8" IFPersonID="" FamilyName="SCHEWE" GivenName="Svenja" NOC="" Gender="Female" />
|
||||
<Person PersonID="5ae49552-1097-4f04-87df-4fdc90ba16e9" IFPersonID="" FamilyName="WESTPHALEN" GivenName="Frederike" NOC="" Gender="Female" />
|
||||
<Person PersonID="6ac9d970-2026-40d9-9205-49a15b55a1a4" IFPersonID="" FamilyName="BEILKEN" GivenName="Till" NOC="" Gender="Male" />
|
||||
<Person PersonID="5737cb50-9b73-4446-97a1-86317c0dae59" IFPersonID="" FamilyName="HALLE" GivenName="Julian" NOC="" Gender="Male" />
|
||||
<Person PersonID="9828e904-a945-4f97-a6cb-ee1a00c705e4" IFPersonID="" FamilyName="ECKMANN" GivenName="Lasse" NOC="" Gender="Male" />
|
||||
<Person PersonID="e937c6b5-6edc-462b-b4f8-c465656ffc6a" IFPersonID="" FamilyName="PETERSON" GivenName="Jan" NOC="" Gender="Male" />
|
||||
<Person PersonID="ec63fc3e-5a8c-4bc2-8e06-dce462d84146" IFPersonID="" FamilyName="FOLTINEK" GivenName="Emilia" NOC="" Gender="Female" />
|
||||
<Person PersonID="6d634781-abed-4c17-820b-2551fc8501d5" IFPersonID="" FamilyName="KLEIß" GivenName="Melissa" NOC="" Gender="Female" />
|
||||
<Person PersonID="cfd23e5c-9dae-4b53-ba2f-439f8a6b6ddb" IFPersonID="" FamilyName="ADE" GivenName="Christof" NOC="" Gender="Male" />
|
||||
<Person PersonID="ae2b47b1-83ce-4417-94af-19a5b3a2605a" IFPersonID="" FamilyName="HEGER" GivenName="Moritz" NOC="" Gender="Male" />
|
||||
<Person PersonID="aa5e9c9f-1393-4ba4-ad28-84cc4bbecb63" IFPersonID="" FamilyName="KLASEN" GivenName="Maria Regina" NOC="" Gender="Female" />
|
||||
<Person PersonID="cb8d4c23-0d73-45fa-aac3-7978fb253987" IFPersonID="" FamilyName="KRALLMANN" GivenName="Anna" NOC="" Gender="Female" />
|
||||
<Person PersonID="fabd5664-1339-46e5-b4ed-110f794a317d" IFPersonID="" FamilyName="MUNZ" GivenName="Oliver" NOC="" Gender="Male" />
|
||||
<Person PersonID="f3d214e9-4652-4192-9817-bbeee94efaba" IFPersonID="" FamilyName="SIEWEKE" GivenName="Tobias" NOC="" Gender="Male" />
|
||||
<Person PersonID="5cf95655-605c-45dc-a5af-61a677f4f39a" IFPersonID="" FamilyName="HALL" GivenName="Philip" NOC="" Gender="Male" />
|
||||
<Person PersonID="25604e0d-2617-41aa-b495-8f6602543ca3" IFPersonID="" FamilyName="von WEIDENBACH" GivenName="Moritz" NOC="" Gender="Male" />
|
||||
<Person PersonID="4ebd46ce-18a8-4635-b8cd-ac9ee82f2e78" IFPersonID="" FamilyName="BENNET" GivenName="Nis" NOC="" Gender="Male" />
|
||||
<Person PersonID="371b2519-0883-4a0f-8a74-96cef3dc53bd" IFPersonID="" FamilyName="PICH" GivenName="Moritz" NOC="" Gender="Male" />
|
||||
<Person PersonID="1226cc52-a949-41a1-866f-f5a663082697" IFPersonID="" FamilyName="BAHR" GivenName="Vivien" NOC="" Gender="Female" />
|
||||
<Person PersonID="81aad5b7-1049-4a49-9db6-603ab3c959e3" IFPersonID="" FamilyName="LORENZ" GivenName="Marie" NOC="" Gender="Female" />
|
||||
<Person PersonID="9bd7d06b-52aa-48dd-a35c-cedd3c96f42f" IFPersonID="" FamilyName="GERRITZEN" GivenName="Finn" NOC="" Gender="Male" />
|
||||
<Person PersonID="13e84701-beb0-4f81-ab44-6b923347b5b3" IFPersonID="" FamilyName="FISCHER" GivenName="Eric" NOC="" Gender="Male" />
|
||||
<Person PersonID="2d782627-107f-490d-9029-d6d86c6e3290" IFPersonID="" FamilyName="POLTZE" GivenName="Victoria" NOC="" Gender="Female" />
|
||||
<Person PersonID="0fe0f8a8-c851-49f3-a267-2f1342194191" IFPersonID="" FamilyName="POLTZE" GivenName="Patricia" NOC="" Gender="Female" />
|
||||
<Person PersonID="31a11cc2-0313-4390-b241-a841b00e8bb1" IFPersonID="" FamilyName="EISENLOHR" GivenName="Sarah" NOC="" Gender="Female" />
|
||||
<Person PersonID="d2504b6f-18c7-4723-8240-7db069c9e17f" IFPersonID="" FamilyName="HAGEN" GivenName="Hannah" NOC="" Gender="Female" />
|
||||
<Person PersonID="331da431-50b6-4e76-a58d-27c7eeecbbde" IFPersonID="" FamilyName="WENNZEL" GivenName="Annika" NOC="" Gender="Female" />
|
||||
<Person PersonID="8d06fef3-dd9a-4e04-9027-945fee96b9e8" IFPersonID="" FamilyName="BERGMANN" GivenName="Marla" NOC="" Gender="Female" />
|
||||
<Person PersonID="e075e7a1-595d-4e86-88d8-45c3408c354a" IFPersonID="" FamilyName="MIEBACH" GivenName="Caspar" NOC="" Gender="Male" />
|
||||
<Person PersonID="4773e605-5883-4327-9cb3-3eb4974fed91" IFPersonID="" FamilyName="SCHÖNFELDT" GivenName="Tom Luis" NOC="" Gender="Male" />
|
||||
<Person PersonID="728e3188-ec5e-492f-8e33-ec483bf62565" IFPersonID="" FamilyName="KRAUSE" GivenName="Max" NOC="" Gender="Male" />
|
||||
<Person PersonID="3e4329f8-6926-4f33-bf37-bb2db041aad9" IFPersonID="" FamilyName="AHLERS" GivenName="Jacob" NOC="" Gender="Male" />
|
||||
<Person PersonID="6ecfc9af-2d59-4a73-ae7c-b94148697c47" IFPersonID="" FamilyName="BUNKE" GivenName="Milia" NOC="" Gender="Female" />
|
||||
<Person PersonID="1e690a9f-5d50-4f67-b034-30c89506df6f" IFPersonID="" FamilyName="ELLERMANN" GivenName="Anna" NOC="" Gender="Female" />
|
||||
<Person PersonID="36164b26-5999-4a8a-bbfe-e7f9a3224d1a" IFPersonID="" FamilyName="SPOHR" GivenName="Simon" NOC="" Gender="Male" />
|
||||
<Person PersonID="f5692240-e12f-471b-a469-bcde7819ef37" IFPersonID="" FamilyName="BRUGMANS" GivenName="Aliska" NOC="" Gender="Female" />
|
||||
<Person PersonID="3bd81fbe-9b3e-4c87-a7ce-eac7de2ed5ad" IFPersonID="" FamilyName="TOETZ" GivenName="Lena" NOC="" Gender="Female" />
|
||||
<Person PersonID="b07d6130-2819-46e2-af20-e43938557ae0" IFPersonID="" FamilyName="GOTTUK" GivenName="Jannika" NOC="" Gender="Female" />
|
||||
<Person PersonID="b5fc1ad8-72b2-4a91-9720-5a2f5ec01b2d" IFPersonID="" FamilyName="BORBET" GivenName="Lea" NOC="" Gender="Female" />
|
||||
<Person PersonID="908b2c60-b1db-4666-9665-58374b0106f7" IFPersonID="" FamilyName="BORBET" GivenName="Jan" NOC="" Gender="Male" />
|
||||
<Person PersonID="19094afe-a67e-485f-b9b4-5640f861404a" IFPersonID="" FamilyName="ULRICH" GivenName="Ole" NOC="" Gender="Male" />
|
||||
<Person PersonID="323cf154-d597-45c2-90fb-0c96146a4867" IFPersonID="" FamilyName="KOSANKE" GivenName="Leonard" NOC="" Gender="Male" />
|
||||
<Person PersonID="ac3f0c4f-1b2c-4c3b-9df8-4278ba7eac2e" IFPersonID="" FamilyName="LAMPE" GivenName="Emilia" NOC="" Gender="Female" />
|
||||
<Person PersonID="0c39d674-6ba5-4b9d-bf33-ef2c845755c7" IFPersonID="" FamilyName="MOMM" GivenName="Ava" NOC="" Gender="Female" />
|
||||
<Person PersonID="c6cfa658-f40f-420e-ae1d-5c8fe4332646" IFPersonID="" FamilyName="SUAREZ" GivenName="Lucas" NOC="" Gender="Male" />
|
||||
<Person PersonID="12f2191c-2990-4a8e-b976-a1a4a366d565" IFPersonID="" FamilyName="GFRÖRER" GivenName="Antonia" NOC="" Gender="Female" />
|
||||
<Person PersonID="c8681fa0-9ad2-44f1-8786-95c44eecaccb" IFPersonID="" FamilyName="THIELEMANN" GivenName="Line Johanna" NOC="" Gender="Female" />
|
||||
<Person PersonID="7c0084e7-6516-4d64-abea-3285022843e5" IFPersonID="" FamilyName="SCHÖNE" GivenName="Sofie" NOC="" Gender="Female" />
|
||||
<Person PersonID="5d606c13-4edf-43bb-b041-720de799f10c" IFPersonID="" FamilyName="FRICKE" GivenName="Leonie" NOC="" Gender="Female" />
|
||||
<Person PersonID="e3b73402-446c-4822-b4a9-a57d46edb79d" IFPersonID="" FamilyName="OSTERMANN" GivenName="Anneke" NOC="" Gender="Female" />
|
||||
<Person PersonID="e0f2b284-f4bf-4db8-994c-0b2fd72268d2" IFPersonID="" FamilyName="HEINRICH" GivenName="Charlotte" NOC="" Gender="Female" />
|
||||
<Person PersonID="8f608fef-18e9-4b15-8921-ee16465b4dc4" IFPersonID="" FamilyName="SCHMOLKE" GivenName="Marlene" NOC="" Gender="Female" />
|
||||
<Person PersonID="8fd4fdfa-2ad8-487a-9011-d371945b75ea" IFPersonID="" FamilyName="FELSKE" GivenName="Veit" NOC="" Gender="Male" />
|
||||
<Person PersonID="3f9cd255-ac1d-4687-85e7-f9fbb55ca128" IFPersonID="" FamilyName="WENZKE" GivenName="Christopher" NOC="" Gender="Male" />
|
||||
<Person PersonID="916ee320-6212-4048-9fb0-12f2084bcf2f" IFPersonID="" FamilyName="SCHMIDT" GivenName="Andreas" NOC="" Gender="Male" />
|
||||
<Person PersonID="b48e9cac-9062-4df7-baf4-481e6178cb7e" IFPersonID="" FamilyName="HASSE" GivenName="Lucia" NOC="" Gender="Female" />
|
||||
<Person PersonID="9d0a08dd-53cc-4d0e-8076-ed8609776238" IFPersonID="" FamilyName="HAIMERL" GivenName="Benedikt" NOC="" Gender="Male" />
|
||||
<Person PersonID="b3299431-4885-4a60-9fa5-69f4c270ea8b" IFPersonID="" FamilyName="HUBER" GivenName="Xaver" NOC="" Gender="Male" />
|
||||
<Person PersonID="0d52b721-7d3d-4147-b436-65706abaeb33" IFPersonID="" FamilyName="JUNG" GivenName="Moritz" NOC="" Gender="Male" />
|
||||
<Person PersonID="6e8c609c-9152-4d7c-9b29-cef2145b9752" IFPersonID="" FamilyName="KRÜGER" GivenName="Mats" NOC="" Gender="Male" />
|
||||
<Person PersonID="3c51d3e7-0f02-4576-8173-df32c6abde6b" IFPersonID="" FamilyName="SCHMIDT" GivenName="Martin" NOC="" Gender="Male" />
|
||||
<Person PersonID="74cb0ecf-b466-4d39-96e5-3ace3f4e0d0f" IFPersonID="" FamilyName="von CRAMON" GivenName="Emanuel" NOC="" Gender="Male" />
|
||||
<Person PersonID="a06ad28a-97ee-4a46-8385-e09466d81edf" IFPersonID="" FamilyName="FERNHOLZ" GivenName="Kim" NOC="" Gender="Female" />
|
||||
<Person PersonID="ce08a0b5-7224-4a06-85dc-c65cdabb188f" IFPersonID="" FamilyName="OFFERGELD" GivenName="My Hoa Marie" NOC="" Gender="Female" />
|
||||
<Person PersonID="1b0b5c44-600f-4e74-bcbe-a55e57a73c23" IFPersonID="" FamilyName="ROPOHL" GivenName="Jakob" NOC="" Gender="Male" />
|
||||
<Person PersonID="4a0b89b3-215d-4e90-8c4c-7a562bb56879" IFPersonID="" FamilyName="STILKENBÄUMER" GivenName="Tim" NOC="" Gender="Male" />
|
||||
<Person PersonID="b8502c66-9b31-4879-bce6-a5af856c1389" IFPersonID="" FamilyName="ARP" GivenName="Paul" NOC="" Gender="Male" />
|
||||
<Person PersonID="52466a0d-3b51-43ba-972e-52b8a46cbc11" IFPersonID="" FamilyName="KUSS" GivenName="Lennart" NOC="" Gender="Male" />
|
||||
<Person PersonID="af31781a-c280-44c4-ae51-982ea4c09d6d" IFPersonID="" FamilyName="CHASSOL" GivenName="Luise" NOC="" Gender="Female" />
|
||||
<Person PersonID="29c44d21-23ac-40be-bb94-2073df1cbd2e" IFPersonID="" FamilyName="KLAMMT" GivenName="Ulrika" NOC="" Gender="Female" />
|
||||
<Person PersonID="5cff16ee-e2ef-4f3b-a30f-841d04a3135c" IFPersonID="" FamilyName="HEILINGBRUNNER" GivenName="Theresa" NOC="" Gender="Female" />
|
||||
<Person PersonID="46e7cfd4-96c2-4375-a32e-8503ac6e9562" IFPersonID="" FamilyName="LÖFFLER" GivenName="Theresa" NOC="" Gender="Female" />
|
||||
<Person PersonID="b148bbdf-3d4b-436f-a58a-2b3f4f789533" IFPersonID="" FamilyName="GRAFF" GivenName="Felix" NOC="" Gender="Male" />
|
||||
<Person PersonID="8ebba8ef-f30b-42fc-8c67-c5e6826435c5" IFPersonID="" FamilyName="BRUGMANS" GivenName="Arend" NOC="" Gender="Male" />
|
||||
<Person PersonID="c4b70273-7b6b-4b88-923f-0ce9d0b59ff9" IFPersonID="" FamilyName="DONATH" GivenName="Oliver" NOC="" Gender="Male" />
|
||||
<Person PersonID="61076bcd-4d2b-431c-9350-1f5d2d9a2190" IFPersonID="" FamilyName="VENGER" GivenName="Justin" NOC="" Gender="Male" />
|
||||
<Person PersonID="730522cb-bf20-4eca-8e95-a0cb0e22c91c" IFPersonID="" FamilyName="TORKA" GivenName="Clara Emilia" NOC="" Gender="Female" />
|
||||
<Person PersonID="451ae650-a166-4add-8a63-94a6a135a643" IFPersonID="" FamilyName="TORKA" GivenName="Leon" NOC="" Gender="Male" />
|
||||
<Person PersonID="348ccdb8-eca3-45f6-832b-f550c393daae" IFPersonID="" FamilyName="PLETTNER" GivenName="Lina" NOC="" Gender="Female" />
|
||||
<Person PersonID="7155971e-ba1d-4649-a748-496745cf37e3" IFPersonID="" FamilyName="STEINLEIN" GivenName="Theresa" NOC="" Gender="Female" />
|
||||
<Person PersonID="8a6639d1-26ae-4244-8c72-97af5a4212c7" IFPersonID="" FamilyName="KALETTA" GivenName="Garcia" NOC="" Gender="Female" />
|
||||
<Person PersonID="4f921208-1d79-4e91-9fa1-65952b101578" IFPersonID="" FamilyName="TROSCHKE" GivenName="Aurel" NOC="" Gender="Male" />
|
||||
<Person PersonID="055c2c89-8b9c-4cda-8a27-08a65190656b" IFPersonID="" FamilyName="SCHMIDT-MAAG" GivenName="Katja" NOC="" Gender="Female" />
|
||||
<Person PersonID="c0a9e92b-7243-46ad-8a72-69d6843d310a" IFPersonID="" FamilyName="NEUMANN" GivenName="Lilly" NOC="" Gender="Female" />
|
||||
<Person PersonID="7a6925be-e9d9-486d-9cf0-1e0c506dc19f" IFPersonID="" FamilyName="FIGGE" GivenName="Johanna" NOC="" Gender="Female" />
|
||||
<Person PersonID="34bb85ce-319a-431d-baab-480db0631843" IFPersonID="" FamilyName="LABÖCK" GivenName="Sophie" NOC="" Gender="Female" />
|
||||
<Person PersonID="29c82abe-b35a-40d9-85e9-74b383f57081" IFPersonID="" FamilyName="BICKEL" GivenName="Tobias" NOC="" Gender="Male" />
|
||||
<Person PersonID="a670c4aa-c08d-40bf-9f3f-404d183234ea" IFPersonID="" FamilyName="BLEIBAUM" GivenName="Anton" NOC="" Gender="Male" />
|
||||
<Person PersonID="1e373452-50af-4fee-afe4-0a70c19e496a" IFPersonID="" FamilyName="JACOBS" GivenName="Tobias" NOC="" Gender="Male" />
|
||||
<Person PersonID="9eb7dd58-b239-4dfe-aa6d-d7836ef06e44" IFPersonID="" FamilyName="PLÖTTNER" GivenName="Robert" NOC="" Gender="Male" />
|
||||
<Person PersonID="ccdbc583-1530-44be-b216-aff0316b4423" IFPersonID="" FamilyName="MÜHLICH" GivenName="Paula" NOC="" Gender="Female" />
|
||||
<Person PersonID="d78a04c4-386c-4518-9090-20106b9768ff" IFPersonID="" FamilyName="BOLDT" GivenName="Johanna" NOC="" Gender="Female" />
|
||||
<Person PersonID="7e6262a0-e4e8-4366-8f2f-040e37860d94" IFPersonID="" FamilyName="SCHNEIDER" GivenName="Sven" NOC="" Gender="Male" />
|
||||
<Person PersonID="ab9f341e-e70b-488e-80de-f6b325587f4b" IFPersonID="" FamilyName="VOIGT" GivenName="Tom" NOC="" Gender="Male" />
|
||||
<Person PersonID="44b7f90b-2c5e-4598-b307-248f698fd9f1" IFPersonID="" FamilyName="MATHWIG" GivenName="Julian" NOC="" Gender="Male" />
|
||||
<Person PersonID="120bf979-34f5-45c3-8eb2-95e941f9562b" IFPersonID="" FamilyName="FIEDLER" GivenName="Niklas" NOC="" Gender="Male" />
|
||||
<Person PersonID="954ff860-e5fc-4747-84ab-b95adb91822c" IFPersonID="" FamilyName="PASSANNANTE" GivenName="Franca" NOC="" Gender="Female" />
|
||||
<Person PersonID="3871daeb-12f7-456f-8f08-ae803385f39d" IFPersonID="" FamilyName="LEHMANN" GivenName="Julia" NOC="" Gender="Female" />
|
||||
<Person PersonID="7b9e66de-d820-4023-a4a5-853b9f89eb37" IFPersonID="" FamilyName="WEIGT" GivenName="Nele" NOC="" Gender="Female" />
|
||||
<Person PersonID="481a353b-c3d2-407e-84c1-183a0572b399" IFPersonID="" FamilyName="MAAß" GivenName="Charlotte" NOC="" Gender="Female" />
|
||||
<Person PersonID="088ac9b6-6d45-407e-9774-5ca453c8097b" IFPersonID="" FamilyName="HAUSMANN" GivenName="Oda" NOC="" Gender="Male" />
|
||||
<Person PersonID="01ab3d71-6d0f-481f-aa43-eb009dae7458" IFPersonID="" FamilyName="SCHLEITHOFF" GivenName="Raphael" NOC="" Gender="Male" />
|
||||
<Person PersonID="d2d28926-e4a0-4639-a584-d2652eb38b77" IFPersonID="" FamilyName="PRZYBYL" GivenName="Insa" NOC="" Gender="Female" />
|
||||
<Person PersonID="e1493195-a79e-459d-ac1e-01e9c19c9beb" IFPersonID="" FamilyName="LEDDERBOGE" GivenName="Helene" NOC="" Gender="Female" />
|
||||
<Person PersonID="a17cac90-6e7d-4c39-908e-c729a794cd07" IFPersonID="" FamilyName="WOLFF" GivenName="Charlotte" NOC="" Gender="Female" />
|
||||
<Person PersonID="70eadb36-cae7-4725-a397-09557f64472b" IFPersonID="" FamilyName="STEINICKE" GivenName="Greta" NOC="" Gender="Female" />
|
||||
<Person PersonID="840414aa-104f-4724-9810-8867611ed084" IFPersonID="" FamilyName="ENGELMANN" GivenName="Alisa" NOC="" Gender="Female" />
|
||||
<Person PersonID="fcfdca86-4206-4bcf-82ee-dac7a6b31459" IFPersonID="" FamilyName="ENGELMANN" GivenName="Niklas" NOC="" Gender="Male" />
|
||||
<Person PersonID="43deabed-ba20-46f1-8ee9-47184bd8e116" IFPersonID="" FamilyName="EICHHORST" GivenName="Leonie" NOC="" Gender="Female" />
|
||||
<Person PersonID="522bf39d-0895-4a2c-b417-f0f2fd63e0ef" IFPersonID="" FamilyName="HOESCH" GivenName="Tatjana" NOC="" Gender="Female" />
|
||||
<Person PersonID="7d531088-47ef-463c-9f67-e28254957992" IFPersonID="" FamilyName="HOERR" GivenName="Christopher" NOC="" Gender="Male" />
|
||||
<Person PersonID="a0c88ef5-20ac-41ce-bda3-1752a251bab1" IFPersonID="" FamilyName="HAMANN" GivenName="Daniel" NOC="" Gender="Male" />
|
||||
<Person PersonID="c4855233-eb13-40d5-9c3e-4eb6ee70f8c5" IFPersonID="" FamilyName="GERMAR" GivenName="Henrike" NOC="" Gender="Female" />
|
||||
<Person PersonID="a1c01de9-e74b-4755-be5c-cbe05de8ba9d" IFPersonID="" FamilyName="PROFITLICH" GivenName="Hannah" NOC="" Gender="Female" />
|
||||
<Person PersonID="e5a72cb2-8339-43bb-b140-0a2966e995e9" IFPersonID="" FamilyName="AHLERS" GivenName="Emma" NOC="" Gender="Female" />
|
||||
<Person PersonID="c697604f-7c51-44c5-af85-e6f5c7d5c158" IFPersonID="" FamilyName="WILLE" GivenName="Hanna" NOC="" Gender="Female" />
|
||||
<Person PersonID="23186eb0-b7b0-4f57-ac99-1c894b23795d" IFPersonID="" FamilyName="PIES" GivenName="Marcus" NOC="" Gender="Male" />
|
||||
<Person PersonID="8512eeb9-b494-46c9-a57e-db20aa55df13" IFPersonID="" FamilyName="LUKOSCH" GivenName="Matthias" NOC="" Gender="Male" />
|
||||
<Person PersonID="5b326189-8982-4f97-8f57-b7afae718451" IFPersonID="" FamilyName="ULBRICH" GivenName="Beatrice" NOC="" Gender="Female" />
|
||||
<Person PersonID="8dd2545b-8988-4be9-8277-1a78010957be" IFPersonID="" FamilyName="RENNER" GivenName="Anissa" NOC="" Gender="Female" />
|
||||
<Person PersonID="850f5280-5b51-4aa2-bbec-465bcb9ca21c" IFPersonID="" FamilyName="SOBOTT" GivenName="Julian" NOC="" Gender="Male" />
|
||||
<Person PersonID="dba110c6-fed3-4925-847a-44045a8a4f7e" IFPersonID="" FamilyName="HILDEBRAND" GivenName="Marc" NOC="" Gender="Male" />
|
||||
<Person PersonID="24570773-0a16-48a3-8a52-32547cc21c2d" IFPersonID="" FamilyName="CHRISTOPHERSEN" GivenName="Malte" NOC="" Gender="Male" />
|
||||
<Person PersonID="4dcb51be-8e6f-4e42-ae9c-dc0edad6683e" IFPersonID="" FamilyName="RAUSCH" GivenName="Niklas" NOC="" Gender="Male" />
|
||||
<Person PersonID="7283a89d-afe9-4f35-becd-94fe15332b61" IFPersonID="" FamilyName="KLASEN" GivenName="Linus" NOC="" Gender="Male" />
|
||||
<Person PersonID="95a73cff-fa5c-4dae-a96f-77743ca4962a" IFPersonID="" FamilyName="GÖTTLICH" GivenName="Daniel" NOC="" Gender="Male" />
|
||||
<Person PersonID="16ae2680-1509-4fdf-9b78-757fe0387d6d" IFPersonID="" FamilyName="CORSI" GivenName="Nicolas" NOC="" Gender="Male" />
|
||||
<Person PersonID="4dfe527f-b344-4acf-ac55-797d3fa5e4ae" IFPersonID="" FamilyName="JANSEN" GivenName="Nico" NOC="" Gender="Male" />
|
||||
<Person PersonID="4219bcb2-5786-4c55-acba-55bc40a32b7f" IFPersonID="" FamilyName="BATZING" GivenName="Bente" NOC="" Gender="Female" />
|
||||
<Person PersonID="44577a33-2638-4157-982a-ffa381208f1a" IFPersonID="" FamilyName="WOLFF" GivenName="Anton" NOC="" Gender="Male" />
|
||||
<Person PersonID="231f0d82-3b14-46ae-a860-8bc73661ba68" IFPersonID="" FamilyName="LOHMER" GivenName="Johannes" NOC="" Gender="Male" />
|
||||
<Person PersonID="4028656a-08bd-4fae-8167-0f480a54cd5a" IFPersonID="" FamilyName="TARABOCHIA" GivenName="Marco" NOC="" Gender="Male" />
|
||||
<Person PersonID="a32d9b33-4339-4e96-ba3f-b46087d68750" IFPersonID="" FamilyName="DAMERAU" GivenName="Alexandra" NOC="" Gender="Female" />
|
||||
<Person PersonID="4ba9cdb8-400c-47f6-8e40-eba0fcc3d6d4" IFPersonID="" FamilyName="SCHWIRKMANN" GivenName="Clara" NOC="" Gender="Female" />
|
||||
<Person PersonID="da1cf1be-5e98-46df-bba6-16afa9338e34" IFPersonID="" FamilyName="FRITZ" GivenName="Charlotta" NOC="" Gender="Female" />
|
||||
<Person PersonID="eebdfb21-b77e-4feb-9b6d-c325a65d7636" IFPersonID="" FamilyName="SCHRIMPER" GivenName="Carolin" NOC="" Gender="Female" />
|
||||
<Person PersonID="d9a8dc62-ec83-4e69-9f93-5c78949b9167" IFPersonID="" FamilyName="LENKMANN" GivenName="Maike" NOC="" Gender="Female" />
|
||||
<Person PersonID="91d1aee4-bc30-4774-8fbf-ab9a48b0ae8b" IFPersonID="" FamilyName="RIXNER" GivenName="Elena" NOC="" Gender="Female" />
|
||||
<Person PersonID="f9969008-f1e1-44dc-9d98-f84f54fe6f5c" IFPersonID="" FamilyName="ROLLE" GivenName="Dennis" NOC="" Gender="Male" />
|
||||
<Person PersonID="337f3d48-874e-4249-a04b-6d3bc161db1d" IFPersonID="" FamilyName="GÜNTHER" GivenName="Steven" NOC="" Gender="Male" />
|
||||
<Person PersonID="7ebfee8b-55da-4886-9a03-5ad3ad533a53" IFPersonID="" FamilyName="von WALDOW" GivenName="Sophie" NOC="" Gender="Female" />
|
||||
<Person PersonID="7b43909c-da44-4105-a88a-788eb2c3dfaa" IFPersonID="" FamilyName="SCHAAFF" GivenName="Carolin" NOC="" Gender="Female" />
|
||||
<Person PersonID="4a82abee-f464-4cd8-a0a9-ae5c77c27685" IFPersonID="" FamilyName="LEITL" GivenName="Henrike" NOC="" Gender="Female" />
|
||||
<Person PersonID="c78bd123-bf7b-4a6f-9cf7-bcbac0e9893d" IFPersonID="" FamilyName="HOFMANN" GivenName="Inga-Marie" NOC="" Gender="Female" />
|
||||
<Person PersonID="8ce9957b-f9f5-4de2-9473-f508d8225347" IFPersonID="" FamilyName="MELCHER" GivenName="Gustavo" NOC="" Gender="Male" />
|
||||
<Person PersonID="63fbcdb7-8db2-4595-a88f-f0adc0eae128" IFPersonID="" FamilyName="HUBER" GivenName="Vitus" NOC="" Gender="Male" />
|
||||
<Person PersonID="2d162999-1ffc-4297-990e-b76674dbdf62" IFPersonID="" FamilyName="WINKEL" GivenName="Job" NOC="" Gender="Male" />
|
||||
<Person PersonID="716d25e6-1868-45f2-8a90-86626c1e6261" IFPersonID="" FamilyName="TROSIEN" GivenName="J. Mika" NOC="" Gender="Female" />
|
||||
<Person PersonID="0b241894-5e4a-4749-a24d-aac80e93215c" IFPersonID="" FamilyName="ROYLA" GivenName="Jonas" NOC="" Gender="Male" />
|
||||
<Person PersonID="c09591e1-d0f3-4ec0-85b6-e9d720eb82d3" IFPersonID="" FamilyName="ROYLA" GivenName="Philipp" NOC="" Gender="Male" />
|
||||
<Person PersonID="44911916-7803-4bd8-8257-ad1e4435f384" IFPersonID="" FamilyName="ROLLE" GivenName="Dennis" NOC="" Gender="Male" />
|
||||
<Person PersonID="d98f5132-ac42-45f2-ac6b-153f44801c78" IFPersonID="" FamilyName="GÜNTHER" GivenName="Steven" NOC="" Gender="Male" />
|
||||
<Person PersonID="4e2492a7-69b8-4966-8b1e-31be62899b6f" IFPersonID="" FamilyName="WEIGELT" GivenName="Mattes" NOC="" Gender="Male" />
|
||||
<Person PersonID="800c4191-2233-404b-9c4c-dd29b2d81b6a" IFPersonID="" FamilyName="STEUBER" GivenName="Tim" NOC="" Gender="Male" />
|
||||
<Person PersonID="6a1b56ee-bc33-4a5d-ad70-67d38977b2a1" IFPersonID="" FamilyName="LEIDHOLDT" GivenName="Luca" NOC="" Gender="Male" />
|
||||
<Person PersonID="ff798273-ac5f-4551-8efb-9146081398d4" IFPersonID="" FamilyName="MÖLLER" GivenName="Ole" NOC="" Gender="Male" />
|
||||
<Person PersonID="683d0ac8-fdbe-437f-86f6-225bde8c5d2a" IFPersonID="" FamilyName="STROHM" GivenName="Piet" NOC="" Gender="Male" />
|
||||
<Person PersonID="d10a2275-dcaa-478d-b3fb-efc344dea38a" IFPersonID="" FamilyName="STUDT" GivenName="Bjarne" NOC="" Gender="Female" />
|
||||
<Person PersonID="8ece290d-c0cd-418d-96c8-a159ba09e177" IFPersonID="" FamilyName="NACKE" GivenName="Jannis" NOC="" Gender="Male" />
|
||||
<Person PersonID="153d363d-6c08-4ce3-804e-e0cd6e8be4b1" IFPersonID="" FamilyName="BRÜCKNER" GivenName="Hannes" NOC="" Gender="Male" />
|
||||
<Person PersonID="1a5604f1-a863-4a33-9c9a-de5253a6c783" IFPersonID="" FamilyName="LANDAU" GivenName="David" NOC="" Gender="Male" />
|
||||
<Person PersonID="71f09957-41a8-4945-896f-5030d383ecb6" IFPersonID="" FamilyName="THOMAS" GivenName="Julius" NOC="" Gender="Male" />
|
||||
<Person PersonID="f7980da1-4569-4fa6-a2d7-31771682a750" IFPersonID="" FamilyName="SCHELL" GivenName="Caroline" NOC="" Gender="Female" />
|
||||
<Person PersonID="5a479457-9f4f-43ed-834c-c78d29843acb" IFPersonID="" FamilyName="FALTIN" GivenName="Katja" NOC="" Gender="Female" />
|
||||
<Person PersonID="b2907afa-dadf-4e73-b474-7b8c428e1a91" IFPersonID="" FamilyName="HEILINGBRUNNER" GivenName="Christina" NOC="" Gender="Female" />
|
||||
<Person PersonID="aed68885-740e-4117-80dc-9d828ac5c437" IFPersonID="" FamilyName="HEILINGBRUNNER" GivenName="Maximilian" NOC="" Gender="Male" />
|
||||
<Person PersonID="45fe798e-4e11-42ea-83d5-bee287b8d971" IFPersonID="" FamilyName="VOGES" GivenName="Vivienne" NOC="" Gender="Female" />
|
||||
<Person PersonID="91bb3029-8354-4f0f-86ce-2fe56b849c16" IFPersonID="" FamilyName="ROOS" GivenName="Maike" NOC="" Gender="Female" />
|
||||
<Person PersonID="a215a528-f68e-4548-8849-db33b6fda141" IFPersonID="" FamilyName="GOEPFERT" GivenName="Leon" NOC="" Gender="Male" />
|
||||
<Person PersonID="f8b7edbc-c892-4ea6-a769-5a5c535267fc" IFPersonID="" FamilyName="FELDHUSEN" GivenName="Paul" NOC="" Gender="Male" />
|
||||
<Person PersonID="79bdc3b7-30ff-4f3d-9820-9b464959aa79" IFPersonID="" FamilyName="BRAUN" GivenName="Silja" NOC="" Gender="Female" />
|
||||
<Person PersonID="91f4c4cc-8ae4-436a-a4e6-36530d4de8fc" IFPersonID="" FamilyName="LUDOWIG" GivenName="Lea" NOC="" Gender="Female" />
|
||||
<Person PersonID="9346bcc3-b4ea-4b0b-9603-4cf5f181a878" IFPersonID="" FamilyName="GRUSCHKA" GivenName="Arne" NOC="" Gender="Male" />
|
||||
<Person PersonID="e8c92676-e247-45df-af5b-e1ab03220a4e" IFPersonID="" FamilyName="HELLMANN" GivenName="Victor" NOC="" Gender="Male" />
|
||||
<Boat BoatID="cd6b32e6-083e-43e9-b3e9-01ce345e24ad" BoatName="" SailNumber="GER 53471" />
|
||||
<Boat BoatID="cca150d9-fa20-4198-bde3-03328cbbfd74" BoatName="" SailNumber="GER 55659" />
|
||||
<Boat BoatID="436d998b-1014-4134-b5fa-0846a42a9b7d" BoatName="" SailNumber="GER 55547" />
|
||||
<Boat BoatID="247c800a-34be-4214-8b2a-09382747166e" BoatName="" SailNumber="GER 55655" />
|
||||
<Boat BoatID="2c96d7b2-530b-440c-a5b2-0d7d74ef9736" BoatName="" SailNumber="GER 54489" />
|
||||
<Boat BoatID="68fd4c8d-cdd8-43c6-ac0a-0d9867aa1258" BoatName="" SailNumber="GER 51594" />
|
||||
<Boat BoatID="2ad51eb4-565e-49dd-9500-127e2c464140" BoatName="" SailNumber="GER 55378" />
|
||||
<Boat BoatID="c76d99e8-1c87-4031-a540-134d7184938e" BoatName="" SailNumber="GER 52894" />
|
||||
<Boat BoatID="182c1447-a8fc-468b-bbb8-150ce93fe7aa" BoatName="" SailNumber="GER 55362" />
|
||||
<Boat BoatID="913e4b8b-3969-48d5-997e-173866d9cf12" BoatName="" SailNumber="GER 55780" />
|
||||
<Boat BoatID="2ab4c435-2903-4d92-aebe-194855253bbe" BoatName="" SailNumber="GER 53650" />
|
||||
<Boat BoatID="d4c4f67d-146e-4824-b7cc-1a779fb52da3" BoatName="" SailNumber="GER 55027" />
|
||||
<Boat BoatID="c5bcab3d-7bda-4920-b08a-1a8526513977" BoatName="" SailNumber="GER 54788" />
|
||||
<Boat BoatID="2868d4c2-3277-4c53-bcaf-1d4eeb63f6dc" BoatName="" SailNumber="GER 54980" />
|
||||
<Boat BoatID="5990b1c2-49a7-48da-be8c-201377b8258b" BoatName="" SailNumber="GER 54214" />
|
||||
<Boat BoatID="9ac92fcb-c92e-46fd-87c5-233d3ee1e999" BoatName="" SailNumber="GER 55810" />
|
||||
<Boat BoatID="69e30610-daa1-44ef-98ff-25b00184dd98" BoatName="" SailNumber="GER 54435" />
|
||||
<Boat BoatID="387bbf98-0750-4883-8d22-27cbedb817d1" BoatName="" SailNumber="GER 55382" />
|
||||
<Boat BoatID="35861ced-bd84-42f6-8fb9-2910c9d6760d" BoatName="" SailNumber="GER 55786" />
|
||||
<Boat BoatID="043e2b5b-75aa-4419-a211-2c50607b56dd" BoatName="" SailNumber="GER 54611" />
|
||||
<Boat BoatID="d044cdd5-357d-4e5b-b964-2ca915a5e8a6" BoatName="" SailNumber="GER 54576" />
|
||||
<Boat BoatID="74690a41-e33a-4cf9-a4cb-301f60c97069" BoatName="" SailNumber="GER 53970" />
|
||||
<Boat BoatID="faa2f7ba-ae47-4055-bef2-34f29a110390" BoatName="" SailNumber="GER 55140" />
|
||||
<Boat BoatID="118f3318-f7b2-4b1b-b21c-39b194997575" BoatName="" SailNumber="GER 54195" />
|
||||
<Boat BoatID="0042539a-787a-46d8-9c98-3a7e2b443534" BoatName="" SailNumber="GER 54497" />
|
||||
<Boat BoatID="1ce8f554-5b82-4d5f-8a3f-3bbc21667ecd" BoatName="" SailNumber="GER 54966" />
|
||||
<Boat BoatID="2992c30c-a6af-4df2-98e9-3decede41491" BoatName="" SailNumber="GER 55115" />
|
||||
<Boat BoatID="a1677e96-ca01-4fa3-ae65-3e0dfed67d01" BoatName="" SailNumber="GER 55546" />
|
||||
<Boat BoatID="f2628232-d174-4339-abdd-3f53c6cfbd23" BoatName="" SailNumber="GER 55365" />
|
||||
<Boat BoatID="eb7e2b1c-dda2-4287-8d78-3fa91a4f4922" BoatName="" SailNumber="GER 54158" />
|
||||
<Boat BoatID="eafcd70a-4f8f-4e9d-88ad-410ccb5e0921" BoatName="" SailNumber="GER 55230" />
|
||||
<Boat BoatID="b9fb95b0-9b8d-4bda-ac5b-41680e4bc400" BoatName="" SailNumber="GER 54829" />
|
||||
<Boat BoatID="90180931-071e-4146-9049-4342a1655c5c" BoatName="" SailNumber="GER 55233" />
|
||||
<Boat BoatID="3834c352-0f9b-4d65-92b3-44f362a2fbd2" BoatName="" SailNumber="GER 55022" />
|
||||
<Boat BoatID="ad78a2f2-e194-41c8-a05f-464775e7ee90" BoatName="" SailNumber="GER 55541" />
|
||||
<Boat BoatID="90b7bbf4-43f5-4e0f-a560-466364dc38cd" BoatName="" SailNumber="GER 50519" />
|
||||
<Boat BoatID="560bb947-ee4d-4fee-ba48-4c30eb952c26" BoatName="" SailNumber="GER 55624" />
|
||||
<Boat BoatID="c273cbff-777f-4899-b3e3-50b22dfc9273" BoatName="" SailNumber="GER 54885" />
|
||||
<Boat BoatID="f0d26b19-c46f-45b4-bfd4-52f9d4332190" BoatName="" SailNumber="GER 54221" />
|
||||
<Boat BoatID="80a25bc3-fac5-4ee6-8ea7-53fc41195622" BoatName="" SailNumber="GER 55781" />
|
||||
<Boat BoatID="d4090880-de5e-4523-b6a9-5591af7c44a2" BoatName="" SailNumber="GER 54965" />
|
||||
<Boat BoatID="fb2ab1de-b247-4991-9e33-565d2491756a" BoatName="" SailNumber="GER 51736" />
|
||||
<Boat BoatID="b2853195-8cd6-4809-ae50-5b32aa367b39" BoatName="" SailNumber="GER 55542" />
|
||||
<Boat BoatID="1a6206be-c361-473e-9153-5c192e20a58e" BoatName="" SailNumber="GER 54971" />
|
||||
<Boat BoatID="eb885b41-b283-43f3-9613-5caf2202d2fd" BoatName="" SailNumber="GER 55933" />
|
||||
<Boat BoatID="6d1e637c-1a77-4cd3-95ec-5da1e8bba65c" BoatName="" SailNumber="GER 55356" />
|
||||
<Boat BoatID="69901990-703b-4372-bd4c-61a8715456df" BoatName="" SailNumber="GER 55330" />
|
||||
<Boat BoatID="f96ae88f-4cf3-4357-a00c-689d072a9871" BoatName="" SailNumber="GER 52774" />
|
||||
<Boat BoatID="6f814f6e-35ff-4a3a-aef8-698192319f3d" BoatName="" SailNumber="GER 54311" />
|
||||
<Boat BoatID="05c02c25-123b-416a-85da-6c7765d17cd6" BoatName="" SailNumber="GER 54425" />
|
||||
<Boat BoatID="9c9564b0-2b96-4b58-8cf0-6e7b0fe6d10f" BoatName="" SailNumber="GER 51965" />
|
||||
<Boat BoatID="e09ff060-3a17-4239-916a-746d16203c53" BoatName="" SailNumber="GER 55017" />
|
||||
<Boat BoatID="6d06b1aa-93bb-40cc-ae50-75481d0ba1ed" BoatName="" SailNumber="GER 55799" />
|
||||
<Boat BoatID="34b98046-d8ec-482f-8200-7c56c8105983" BoatName="" SailNumber="GER 54746" />
|
||||
<Boat BoatID="2dfd4897-c70e-4601-a20c-7d3b40d5ae03" BoatName="" SailNumber="GER 51879" />
|
||||
<Boat BoatID="7688826a-62be-4d51-81bc-81fe6fec962a" BoatName="" SailNumber="GER 55785" />
|
||||
<Boat BoatID="959cf112-6941-4910-a441-8bcde7ac82b5" BoatName="" SailNumber="GER 54488" />
|
||||
<Boat BoatID="7f1e1631-25f8-461d-ae71-8c4a0a0ba8ff" BoatName="" SailNumber="GER 54501" />
|
||||
<Boat BoatID="16fb6511-3bf8-4eca-977c-8d75a39bf728" BoatName="" SailNumber="GER 53082" />
|
||||
<Boat BoatID="6726f0a9-e4cd-4740-993c-8e4a26f9911f" BoatName="" SailNumber="GER 55783" />
|
||||
<Boat BoatID="25177dce-27c1-4840-9ced-8fcb614f679e" BoatName="" SailNumber="GER 54883" />
|
||||
<Boat BoatID="f11899d1-805b-4af4-a4a0-9055b63c701a" BoatName="" SailNumber="GER 53595" />
|
||||
<Boat BoatID="9015f49b-44d1-453b-a2a7-92f1cd4f9956" BoatName="" SailNumber="GER 54186" />
|
||||
<Boat BoatID="b5c9f123-c3a9-4e34-af94-93987304e6ab" BoatName="" SailNumber="GER 53915" />
|
||||
<Boat BoatID="fe961490-d86c-4ef1-b3d7-9783f52a6ca2" BoatName="" SailNumber="GER 52048" />
|
||||
<Boat BoatID="c42e5a22-7b4f-4b6e-a7fe-97b030c6a7ef" BoatName="" SailNumber="GER 54500" />
|
||||
<Boat BoatID="4bd45adc-d120-4630-9bdf-9bb7014fb128" BoatName="" SailNumber="GER 55660" />
|
||||
<Boat BoatID="6abaaea3-6e3e-478c-b764-9d96552e8814" BoatName="" SailNumber="GER 54977" />
|
||||
<Boat BoatID="9dec7a3b-c5a1-4486-92bc-a1803a166744" BoatName="" SailNumber="GER 55364" />
|
||||
<Boat BoatID="979f7643-5876-4db0-8702-a1fe41859276" BoatName="" SailNumber="GER 55843" />
|
||||
<Boat BoatID="e0da25a6-ec5e-40d3-bcb6-a4a82549b002" BoatName="" SailNumber="GER 54691" />
|
||||
<Boat BoatID="7e6b50df-22d2-4d9b-b63e-a6029b3a7dbe" BoatName="" SailNumber="GER 55234" />
|
||||
<Boat BoatID="e6e11fa4-f324-4a54-8189-a83febb7b011" BoatName="" SailNumber="GER 54343" />
|
||||
<Boat BoatID="e5759181-a9c6-4eef-87ba-ade56239dbfa" BoatName="" SailNumber="GER 54436" />
|
||||
<Boat BoatID="0b7f7cf3-d7e1-4a09-b3db-af600fb76ecb" BoatName="" SailNumber="GER 55498" />
|
||||
<Boat BoatID="1692db31-de8e-4170-8b71-b38cf723a150" BoatName="" SailNumber="GER 55163" />
|
||||
<Boat BoatID="2b1657ae-81fd-49ad-a6b5-b6b2e446d31e" BoatName="" SailNumber="GER 55155" />
|
||||
<Boat BoatID="a20f7bdf-33bc-4b3c-96b4-b79b20d213a3" BoatName="" SailNumber="GER 52490" />
|
||||
<Boat BoatID="6407745e-63fc-413e-9dfd-b7febdeec0c0" BoatName="" SailNumber="GER 54010" />
|
||||
<Boat BoatID="ef4672f5-4f0d-41fe-aa3d-bd89513fa42b" BoatName="" SailNumber="GER 55016" />
|
||||
<Boat BoatID="d1ce61e2-650a-49f4-b946-c727c153939f" BoatName="" SailNumber="GER 55028" />
|
||||
<Boat BoatID="7998cd71-41f5-4062-91bc-cb1803978548" BoatName="" SailNumber="GER 54159" />
|
||||
<Boat BoatID="d8b7e4f6-ecd1-4e7e-8428-d4ba5dd2c130" BoatName="" SailNumber="GER 55503" />
|
||||
<Boat BoatID="4c2287ca-80b5-4d77-be2f-d73f0a559ad5" BoatName="" SailNumber="GER 54937" />
|
||||
<Boat BoatID="3f9bdabe-a088-4e06-af9c-d9db9d31dd06" BoatName="" SailNumber="GER 54859" />
|
||||
<Boat BoatID="5fa4b362-5294-4ac7-a9f9-dac7e17431ba" BoatName="" SailNumber="GER 54639" />
|
||||
<Boat BoatID="cb9673c2-2842-4a34-b615-dbb881717101" BoatName="" SailNumber="GER 52628" />
|
||||
<Boat BoatID="7cda1e6b-2e11-4d13-9009-dc11b691a800" BoatName="" SailNumber="GER 55377" />
|
||||
<Boat BoatID="516341c7-f44b-4d23-ab34-dda53584c50b" BoatName="" SailNumber="GER 55903" />
|
||||
<Boat BoatID="b4469821-ea1d-4252-84f1-e0bb03a2fe50" BoatName="" SailNumber="GER 55357" />
|
||||
<Boat BoatID="2fa7c10d-46aa-410f-9c16-e40c417659e2" BoatName="" SailNumber="GER 55331" />
|
||||
<Boat BoatID="a6b5ba21-3241-47c5-b302-e699d79a7aec" BoatName="" SailNumber="GER 55251" />
|
||||
<Boat BoatID="5a6bcb54-c91b-4de8-81db-e9b1bdf248fd" BoatName="" SailNumber="GER 54426" />
|
||||
<Boat BoatID="d7bd4a79-3341-40aa-8d13-eac2d7d0fb2b" BoatName="" SailNumber="GER 54430" />
|
||||
<Boat BoatID="426aeb29-bc5c-462c-b9e8-ece7fef8922b" BoatName="" SailNumber="GER 54970" />
|
||||
<Boat BoatID="c148a293-7ac5-4305-a855-f4228ff24756" BoatName="" SailNumber="GER 55502" />
|
||||
<Boat BoatID="f5cc2b9b-a1c2-491c-b517-f4553f1cf950" BoatName="" SailNumber="GER 55363" />
|
||||
<Boat BoatID="c6b471bf-c529-4046-8ded-f6a6ff8aa922" BoatName="" SailNumber="GER 55222" />
|
||||
<Boat BoatID="de3db693-3ff6-4f0a-b1cb-f6e9dc687171" BoatName="" SailNumber="GER 55264" />
|
||||
<Boat BoatID="1dfc46ec-e5ad-4f2e-80a3-fb6e58ccb809" BoatName="" SailNumber="GER 55030" />
|
||||
<Team Gender="Men" TeamID="cd6b32e6-083e-43e9-b3e9-01ce345e24ad" TeamName="Benedikt WALKEMBACH" BoatID="cd6b32e6-083e-43e9-b3e9-01ce345e24ad">
|
||||
<Crew PersonID="4dd872be-c74f-4ec5-907d-1ef72d355a02" Position="C" />
|
||||
<Crew PersonID="917dd02f-f285-47e7-aaae-74c15d464b76" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="cca150d9-fa20-4198-bde3-03328cbbfd74" TeamName="Valentina TAST" BoatID="cca150d9-fa20-4198-bde3-03328cbbfd74">
|
||||
<Crew PersonID="0ca62ba5-bc73-444d-85bb-3dd9de60974e" Position="C" />
|
||||
<Crew PersonID="8530bea0-24b3-4777-92fc-0203b1768404" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="436d998b-1014-4134-b5fa-0846a42a9b7d" TeamName="Konstantin STEIDLE" BoatID="436d998b-1014-4134-b5fa-0846a42a9b7d">
|
||||
<Crew PersonID="fbd25e61-eae8-4eb4-8a33-963447feee5c" Position="C" />
|
||||
<Crew PersonID="130158cb-8024-41a4-ad61-880dd7ae1bd6" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="247c800a-34be-4214-8b2a-09382747166e" TeamName="Janek STRUCHHOLZ" BoatID="247c800a-34be-4214-8b2a-09382747166e">
|
||||
<Crew PersonID="05074078-d6fb-4ecc-90b9-14651bc6b3c5" Position="C" />
|
||||
<Crew PersonID="1f2411fc-7a3e-46c3-b8cb-3b86d9c70272" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="2c96d7b2-530b-440c-a5b2-0d7d74ef9736" TeamName="Lynn THORNS" BoatID="2c96d7b2-530b-440c-a5b2-0d7d74ef9736">
|
||||
<Crew PersonID="6233565e-45f7-443f-9d76-f5f700120b55" Position="C" />
|
||||
<Crew PersonID="2d7fd320-2502-4289-8157-6f0506816452" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="68fd4c8d-cdd8-43c6-ac0a-0d9867aa1258" TeamName="Johanna SCHENK" BoatID="68fd4c8d-cdd8-43c6-ac0a-0d9867aa1258">
|
||||
<Crew PersonID="88fddbd9-a504-4eee-bf0d-e5c1fb2062aa" Position="C" />
|
||||
<Crew PersonID="e06bd015-7ede-477a-be0a-7a647950a64f" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="2ad51eb4-565e-49dd-9500-127e2c464140" TeamName="Jolanda Lene MÜLLER" BoatID="2ad51eb4-565e-49dd-9500-127e2c464140">
|
||||
<Crew PersonID="3e747152-c43a-4daf-8f2e-3292ac0a941a" Position="C" />
|
||||
<Crew PersonID="7ddb8f8f-ae44-4d7e-b3a5-a181479e38f5" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="c76d99e8-1c87-4031-a540-134d7184938e" TeamName="Henning KRÖPLIN" BoatID="c76d99e8-1c87-4031-a540-134d7184938e">
|
||||
<Crew PersonID="0483b94c-4120-43ce-b561-e7d6358450bf" Position="C" />
|
||||
<Crew PersonID="a9c04df6-f3c7-49eb-b744-3d78659365ba" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="182c1447-a8fc-468b-bbb8-150ce93fe7aa" TeamName="Finn KENTER" BoatID="182c1447-a8fc-468b-bbb8-150ce93fe7aa">
|
||||
<Crew PersonID="029c5b9c-333b-4da3-ae78-f0f72923360c" Position="C" />
|
||||
<Crew PersonID="e0e4c917-2d16-436d-b718-ed65a1579a81" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="913e4b8b-3969-48d5-997e-173866d9cf12" TeamName="Analea SCHÄFER" BoatID="913e4b8b-3969-48d5-997e-173866d9cf12">
|
||||
<Crew PersonID="d6af23bc-f4f1-404e-b948-fbd4f069cb02" Position="C" />
|
||||
<Crew PersonID="f9ddd1e8-d1a7-433f-8036-251508b4d5fe" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="2ab4c435-2903-4d92-aebe-194855253bbe" TeamName="Maximilian KRAMER" BoatID="2ab4c435-2903-4d92-aebe-194855253bbe">
|
||||
<Crew PersonID="fcab0d54-1a4d-4b23-8ac9-fc8d0b290787" Position="C" />
|
||||
<Crew PersonID="575535a5-26ea-4443-acc7-b35e2781a4f7" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="d4c4f67d-146e-4824-b7cc-1a779fb52da3" TeamName="Jessica KÖHLER" BoatID="d4c4f67d-146e-4824-b7cc-1a779fb52da3">
|
||||
<Crew PersonID="55cb2f7c-46e2-48f8-9b34-f0517361d6fb" Position="C" />
|
||||
<Crew PersonID="ab2f32ce-c4c1-4634-a265-9f320d9cb017" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="c5bcab3d-7bda-4920-b08a-1a8526513977" TeamName="Lucas SCHLÜTER" BoatID="c5bcab3d-7bda-4920-b08a-1a8526513977">
|
||||
<Crew PersonID="418b9db9-6eac-4c77-9611-5d86ccd495b1" Position="C" />
|
||||
<Crew PersonID="d6a8d063-354a-401d-a966-342de8118fe7" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="2868d4c2-3277-4c53-bcaf-1d4eeb63f6dc" TeamName="Frederike WESTPHALEN" BoatID="2868d4c2-3277-4c53-bcaf-1d4eeb63f6dc">
|
||||
<Crew PersonID="b7f22693-a0b5-4c67-9b6b-28fb39cf7ff8" Position="C" />
|
||||
<Crew PersonID="5ae49552-1097-4f04-87df-4fdc90ba16e9" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="5990b1c2-49a7-48da-be8c-201377b8258b" TeamName="Julian HALLE" BoatID="5990b1c2-49a7-48da-be8c-201377b8258b">
|
||||
<Crew PersonID="6ac9d970-2026-40d9-9205-49a15b55a1a4" Position="C" />
|
||||
<Crew PersonID="5737cb50-9b73-4446-97a1-86317c0dae59" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="9ac92fcb-c92e-46fd-87c5-233d3ee1e999" TeamName="Jan PETERSON" BoatID="9ac92fcb-c92e-46fd-87c5-233d3ee1e999">
|
||||
<Crew PersonID="9828e904-a945-4f97-a6cb-ee1a00c705e4" Position="C" />
|
||||
<Crew PersonID="e937c6b5-6edc-462b-b4f8-c465656ffc6a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="69e30610-daa1-44ef-98ff-25b00184dd98" TeamName="Melissa KLEIß" BoatID="69e30610-daa1-44ef-98ff-25b00184dd98">
|
||||
<Crew PersonID="ec63fc3e-5a8c-4bc2-8e06-dce462d84146" Position="C" />
|
||||
<Crew PersonID="6d634781-abed-4c17-820b-2551fc8501d5" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="387bbf98-0750-4883-8d22-27cbedb817d1" TeamName="Moritz HEGER" BoatID="387bbf98-0750-4883-8d22-27cbedb817d1">
|
||||
<Crew PersonID="cfd23e5c-9dae-4b53-ba2f-439f8a6b6ddb" Position="C" />
|
||||
<Crew PersonID="ae2b47b1-83ce-4417-94af-19a5b3a2605a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="35861ced-bd84-42f6-8fb9-2910c9d6760d" TeamName="Anna KRALLMANN" BoatID="35861ced-bd84-42f6-8fb9-2910c9d6760d">
|
||||
<Crew PersonID="aa5e9c9f-1393-4ba4-ad28-84cc4bbecb63" Position="C" />
|
||||
<Crew PersonID="cb8d4c23-0d73-45fa-aac3-7978fb253987" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="043e2b5b-75aa-4419-a211-2c50607b56dd" TeamName="Tobias SIEWEKE" BoatID="043e2b5b-75aa-4419-a211-2c50607b56dd">
|
||||
<Crew PersonID="fabd5664-1339-46e5-b4ed-110f794a317d" Position="C" />
|
||||
<Crew PersonID="f3d214e9-4652-4192-9817-bbeee94efaba" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="d044cdd5-357d-4e5b-b964-2ca915a5e8a6" TeamName="Moritz VON WEIDENBACH" BoatID="d044cdd5-357d-4e5b-b964-2ca915a5e8a6">
|
||||
<Crew PersonID="5cf95655-605c-45dc-a5af-61a677f4f39a" Position="C" />
|
||||
<Crew PersonID="25604e0d-2617-41aa-b495-8f6602543ca3" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="74690a41-e33a-4cf9-a4cb-301f60c97069" TeamName="Moritz PICH" BoatID="74690a41-e33a-4cf9-a4cb-301f60c97069">
|
||||
<Crew PersonID="4ebd46ce-18a8-4635-b8cd-ac9ee82f2e78" Position="C" />
|
||||
<Crew PersonID="371b2519-0883-4a0f-8a74-96cef3dc53bd" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="faa2f7ba-ae47-4055-bef2-34f29a110390" TeamName="Marie LORENZ" BoatID="faa2f7ba-ae47-4055-bef2-34f29a110390">
|
||||
<Crew PersonID="1226cc52-a949-41a1-866f-f5a663082697" Position="C" />
|
||||
<Crew PersonID="81aad5b7-1049-4a49-9db6-603ab3c959e3" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="118f3318-f7b2-4b1b-b21c-39b194997575" TeamName="Eric FISCHER" BoatID="118f3318-f7b2-4b1b-b21c-39b194997575">
|
||||
<Crew PersonID="9bd7d06b-52aa-48dd-a35c-cedd3c96f42f" Position="C" />
|
||||
<Crew PersonID="13e84701-beb0-4f81-ab44-6b923347b5b3" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="0042539a-787a-46d8-9c98-3a7e2b443534" TeamName="Patricia POLTZE" BoatID="0042539a-787a-46d8-9c98-3a7e2b443534">
|
||||
<Crew PersonID="2d782627-107f-490d-9029-d6d86c6e3290" Position="C" />
|
||||
<Crew PersonID="0fe0f8a8-c851-49f3-a267-2f1342194191" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="1ce8f554-5b82-4d5f-8a3f-3bbc21667ecd" TeamName="Hannah HAGEN" BoatID="1ce8f554-5b82-4d5f-8a3f-3bbc21667ecd">
|
||||
<Crew PersonID="31a11cc2-0313-4390-b241-a841b00e8bb1" Position="C" />
|
||||
<Crew PersonID="d2504b6f-18c7-4723-8240-7db069c9e17f" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="2992c30c-a6af-4df2-98e9-3decede41491" TeamName="Marla BERGMANN" BoatID="2992c30c-a6af-4df2-98e9-3decede41491">
|
||||
<Crew PersonID="331da431-50b6-4e76-a58d-27c7eeecbbde" Position="C" />
|
||||
<Crew PersonID="8d06fef3-dd9a-4e04-9027-945fee96b9e8" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="a1677e96-ca01-4fa3-ae65-3e0dfed67d01" TeamName="Tom Luis SCHÖNFELDT" BoatID="a1677e96-ca01-4fa3-ae65-3e0dfed67d01">
|
||||
<Crew PersonID="e075e7a1-595d-4e86-88d8-45c3408c354a" Position="C" />
|
||||
<Crew PersonID="4773e605-5883-4327-9cb3-3eb4974fed91" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="f2628232-d174-4339-abdd-3f53c6cfbd23" TeamName="Jacob AHLERS" BoatID="f2628232-d174-4339-abdd-3f53c6cfbd23">
|
||||
<Crew PersonID="728e3188-ec5e-492f-8e33-ec483bf62565" Position="C" />
|
||||
<Crew PersonID="3e4329f8-6926-4f33-bf37-bb2db041aad9" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="eb7e2b1c-dda2-4287-8d78-3fa91a4f4922" TeamName="Anna ELLERMANN" BoatID="eb7e2b1c-dda2-4287-8d78-3fa91a4f4922">
|
||||
<Crew PersonID="6ecfc9af-2d59-4a73-ae7c-b94148697c47" Position="C" />
|
||||
<Crew PersonID="1e690a9f-5d50-4f67-b034-30c89506df6f" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="eafcd70a-4f8f-4e9d-88ad-410ccb5e0921" TeamName="Aliska BRUGMANS" BoatID="eafcd70a-4f8f-4e9d-88ad-410ccb5e0921">
|
||||
<Crew PersonID="36164b26-5999-4a8a-bbfe-e7f9a3224d1a" Position="C" />
|
||||
<Crew PersonID="f5692240-e12f-471b-a469-bcde7819ef37" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="b9fb95b0-9b8d-4bda-ac5b-41680e4bc400" TeamName="Jannika GOTTUK" BoatID="b9fb95b0-9b8d-4bda-ac5b-41680e4bc400">
|
||||
<Crew PersonID="3bd81fbe-9b3e-4c87-a7ce-eac7de2ed5ad" Position="C" />
|
||||
<Crew PersonID="b07d6130-2819-46e2-af20-e43938557ae0" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="90180931-071e-4146-9049-4342a1655c5c" TeamName="Jan BORBET" BoatID="90180931-071e-4146-9049-4342a1655c5c">
|
||||
<Crew PersonID="b5fc1ad8-72b2-4a91-9720-5a2f5ec01b2d" Position="C" />
|
||||
<Crew PersonID="908b2c60-b1db-4666-9665-58374b0106f7" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="3834c352-0f9b-4d65-92b3-44f362a2fbd2" TeamName="Leonard KOSANKE" BoatID="3834c352-0f9b-4d65-92b3-44f362a2fbd2">
|
||||
<Crew PersonID="19094afe-a67e-485f-b9b4-5640f861404a" Position="C" />
|
||||
<Crew PersonID="323cf154-d597-45c2-90fb-0c96146a4867" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="ad78a2f2-e194-41c8-a05f-464775e7ee90" TeamName="Ava MOMM" BoatID="ad78a2f2-e194-41c8-a05f-464775e7ee90">
|
||||
<Crew PersonID="ac3f0c4f-1b2c-4c3b-9df8-4278ba7eac2e" Position="C" />
|
||||
<Crew PersonID="0c39d674-6ba5-4b9d-bf33-ef2c845755c7" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="90b7bbf4-43f5-4e0f-a560-466364dc38cd" TeamName="Antonia GFRÖRER" BoatID="90b7bbf4-43f5-4e0f-a560-466364dc38cd">
|
||||
<Crew PersonID="c6cfa658-f40f-420e-ae1d-5c8fe4332646" Position="C" />
|
||||
<Crew PersonID="12f2191c-2990-4a8e-b976-a1a4a366d565" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="560bb947-ee4d-4fee-ba48-4c30eb952c26" TeamName="Sofie SCHÖNE" BoatID="560bb947-ee4d-4fee-ba48-4c30eb952c26">
|
||||
<Crew PersonID="c8681fa0-9ad2-44f1-8786-95c44eecaccb" Position="C" />
|
||||
<Crew PersonID="7c0084e7-6516-4d64-abea-3285022843e5" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="c273cbff-777f-4899-b3e3-50b22dfc9273" TeamName="Anneke OSTERMANN" BoatID="c273cbff-777f-4899-b3e3-50b22dfc9273">
|
||||
<Crew PersonID="5d606c13-4edf-43bb-b041-720de799f10c" Position="C" />
|
||||
<Crew PersonID="e3b73402-446c-4822-b4a9-a57d46edb79d" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="f0d26b19-c46f-45b4-bfd4-52f9d4332190" TeamName="Marlene SCHMOLKE" BoatID="f0d26b19-c46f-45b4-bfd4-52f9d4332190">
|
||||
<Crew PersonID="e0f2b284-f4bf-4db8-994c-0b2fd72268d2" Position="C" />
|
||||
<Crew PersonID="8f608fef-18e9-4b15-8921-ee16465b4dc4" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="80a25bc3-fac5-4ee6-8ea7-53fc41195622" TeamName="Christopher WENZKE" BoatID="80a25bc3-fac5-4ee6-8ea7-53fc41195622">
|
||||
<Crew PersonID="8fd4fdfa-2ad8-487a-9011-d371945b75ea" Position="C" />
|
||||
<Crew PersonID="3f9cd255-ac1d-4687-85e7-f9fbb55ca128" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="d4090880-de5e-4523-b6a9-5591af7c44a2" TeamName="Lucia HASSE" BoatID="d4090880-de5e-4523-b6a9-5591af7c44a2">
|
||||
<Crew PersonID="916ee320-6212-4048-9fb0-12f2084bcf2f" Position="C" />
|
||||
<Crew PersonID="b48e9cac-9062-4df7-baf4-481e6178cb7e" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="fb2ab1de-b247-4991-9e33-565d2491756a" TeamName="Xaver HUBER" BoatID="fb2ab1de-b247-4991-9e33-565d2491756a">
|
||||
<Crew PersonID="9d0a08dd-53cc-4d0e-8076-ed8609776238" Position="C" />
|
||||
<Crew PersonID="b3299431-4885-4a60-9fa5-69f4c270ea8b" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="b2853195-8cd6-4809-ae50-5b32aa367b39" TeamName="Mats KRÜGER" BoatID="b2853195-8cd6-4809-ae50-5b32aa367b39">
|
||||
<Crew PersonID="0d52b721-7d3d-4147-b436-65706abaeb33" Position="C" />
|
||||
<Crew PersonID="6e8c609c-9152-4d7c-9b29-cef2145b9752" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="1a6206be-c361-473e-9153-5c192e20a58e" TeamName="Emanuel VON CRAMON" BoatID="1a6206be-c361-473e-9153-5c192e20a58e">
|
||||
<Crew PersonID="3c51d3e7-0f02-4576-8173-df32c6abde6b" Position="C" />
|
||||
<Crew PersonID="74cb0ecf-b466-4d39-96e5-3ace3f4e0d0f" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="eb885b41-b283-43f3-9613-5caf2202d2fd" TeamName="My Hoa Marie OFFERGELD" BoatID="eb885b41-b283-43f3-9613-5caf2202d2fd">
|
||||
<Crew PersonID="a06ad28a-97ee-4a46-8385-e09466d81edf" Position="C" />
|
||||
<Crew PersonID="ce08a0b5-7224-4a06-85dc-c65cdabb188f" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="6d1e637c-1a77-4cd3-95ec-5da1e8bba65c" TeamName="Tim STILKENBÄUMER" BoatID="6d1e637c-1a77-4cd3-95ec-5da1e8bba65c">
|
||||
<Crew PersonID="1b0b5c44-600f-4e74-bcbe-a55e57a73c23" Position="C" />
|
||||
<Crew PersonID="4a0b89b3-215d-4e90-8c4c-7a562bb56879" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="69901990-703b-4372-bd4c-61a8715456df" TeamName="Lennart KUSS" BoatID="69901990-703b-4372-bd4c-61a8715456df">
|
||||
<Crew PersonID="b8502c66-9b31-4879-bce6-a5af856c1389" Position="C" />
|
||||
<Crew PersonID="52466a0d-3b51-43ba-972e-52b8a46cbc11" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="f96ae88f-4cf3-4357-a00c-689d072a9871" TeamName="Ulrika KLAMMT" BoatID="f96ae88f-4cf3-4357-a00c-689d072a9871">
|
||||
<Crew PersonID="af31781a-c280-44c4-ae51-982ea4c09d6d" Position="C" />
|
||||
<Crew PersonID="29c44d21-23ac-40be-bb94-2073df1cbd2e" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="6f814f6e-35ff-4a3a-aef8-698192319f3d" TeamName="Theresa LÖFFLER" BoatID="6f814f6e-35ff-4a3a-aef8-698192319f3d">
|
||||
<Crew PersonID="5cff16ee-e2ef-4f3b-a30f-841d04a3135c" Position="C" />
|
||||
<Crew PersonID="46e7cfd4-96c2-4375-a32e-8503ac6e9562" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="05c02c25-123b-416a-85da-6c7765d17cd6" TeamName="Arend BRUGMANS" BoatID="05c02c25-123b-416a-85da-6c7765d17cd6">
|
||||
<Crew PersonID="b148bbdf-3d4b-436f-a58a-2b3f4f789533" Position="C" />
|
||||
<Crew PersonID="8ebba8ef-f30b-42fc-8c67-c5e6826435c5" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="9c9564b0-2b96-4b58-8cf0-6e7b0fe6d10f" TeamName="Justin VENGER" BoatID="9c9564b0-2b96-4b58-8cf0-6e7b0fe6d10f">
|
||||
<Crew PersonID="c4b70273-7b6b-4b88-923f-0ce9d0b59ff9" Position="C" />
|
||||
<Crew PersonID="61076bcd-4d2b-431c-9350-1f5d2d9a2190" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="e09ff060-3a17-4239-916a-746d16203c53" TeamName="Leon TORKA" BoatID="e09ff060-3a17-4239-916a-746d16203c53">
|
||||
<Crew PersonID="730522cb-bf20-4eca-8e95-a0cb0e22c91c" Position="C" />
|
||||
<Crew PersonID="451ae650-a166-4add-8a63-94a6a135a643" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="6d06b1aa-93bb-40cc-ae50-75481d0ba1ed" TeamName="Theresa STEINLEIN" BoatID="6d06b1aa-93bb-40cc-ae50-75481d0ba1ed">
|
||||
<Crew PersonID="348ccdb8-eca3-45f6-832b-f550c393daae" Position="C" />
|
||||
<Crew PersonID="7155971e-ba1d-4649-a748-496745cf37e3" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="34b98046-d8ec-482f-8200-7c56c8105983" TeamName="Aurel TROSCHKE" BoatID="34b98046-d8ec-482f-8200-7c56c8105983">
|
||||
<Crew PersonID="8a6639d1-26ae-4244-8c72-97af5a4212c7" Position="C" />
|
||||
<Crew PersonID="4f921208-1d79-4e91-9fa1-65952b101578" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="2dfd4897-c70e-4601-a20c-7d3b40d5ae03" TeamName="Lilly NEUMANN" BoatID="2dfd4897-c70e-4601-a20c-7d3b40d5ae03">
|
||||
<Crew PersonID="055c2c89-8b9c-4cda-8a27-08a65190656b" Position="C" />
|
||||
<Crew PersonID="c0a9e92b-7243-46ad-8a72-69d6843d310a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="7688826a-62be-4d51-81bc-81fe6fec962a" TeamName="Sophie LABÖCK" BoatID="7688826a-62be-4d51-81bc-81fe6fec962a">
|
||||
<Crew PersonID="7a6925be-e9d9-486d-9cf0-1e0c506dc19f" Position="C" />
|
||||
<Crew PersonID="34bb85ce-319a-431d-baab-480db0631843" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="959cf112-6941-4910-a441-8bcde7ac82b5" TeamName="Anton BLEIBAUM" BoatID="959cf112-6941-4910-a441-8bcde7ac82b5">
|
||||
<Crew PersonID="29c82abe-b35a-40d9-85e9-74b383f57081" Position="C" />
|
||||
<Crew PersonID="a670c4aa-c08d-40bf-9f3f-404d183234ea" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="7f1e1631-25f8-461d-ae71-8c4a0a0ba8ff" TeamName="Robert PLÖTTNER" BoatID="7f1e1631-25f8-461d-ae71-8c4a0a0ba8ff">
|
||||
<Crew PersonID="1e373452-50af-4fee-afe4-0a70c19e496a" Position="C" />
|
||||
<Crew PersonID="9eb7dd58-b239-4dfe-aa6d-d7836ef06e44" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="16fb6511-3bf8-4eca-977c-8d75a39bf728" TeamName="Johanna BOLDT" BoatID="16fb6511-3bf8-4eca-977c-8d75a39bf728">
|
||||
<Crew PersonID="ccdbc583-1530-44be-b216-aff0316b4423" Position="C" />
|
||||
<Crew PersonID="d78a04c4-386c-4518-9090-20106b9768ff" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="6726f0a9-e4cd-4740-993c-8e4a26f9911f" TeamName="Tom VOIGT" BoatID="6726f0a9-e4cd-4740-993c-8e4a26f9911f">
|
||||
<Crew PersonID="7e6262a0-e4e8-4366-8f2f-040e37860d94" Position="C" />
|
||||
<Crew PersonID="ab9f341e-e70b-488e-80de-f6b325587f4b" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="25177dce-27c1-4840-9ced-8fcb614f679e" TeamName="Niklas FIEDLER" BoatID="25177dce-27c1-4840-9ced-8fcb614f679e">
|
||||
<Crew PersonID="44b7f90b-2c5e-4598-b307-248f698fd9f1" Position="C" />
|
||||
<Crew PersonID="120bf979-34f5-45c3-8eb2-95e941f9562b" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="f11899d1-805b-4af4-a4a0-9055b63c701a" TeamName="Julia LEHMANN" BoatID="f11899d1-805b-4af4-a4a0-9055b63c701a">
|
||||
<Crew PersonID="954ff860-e5fc-4747-84ab-b95adb91822c" Position="C" />
|
||||
<Crew PersonID="3871daeb-12f7-456f-8f08-ae803385f39d" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="9015f49b-44d1-453b-a2a7-92f1cd4f9956" TeamName="Charlotte MAAß" BoatID="9015f49b-44d1-453b-a2a7-92f1cd4f9956">
|
||||
<Crew PersonID="7b9e66de-d820-4023-a4a5-853b9f89eb37" Position="C" />
|
||||
<Crew PersonID="481a353b-c3d2-407e-84c1-183a0572b399" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="b5c9f123-c3a9-4e34-af94-93987304e6ab" TeamName="Raphael SCHLEITHOFF" BoatID="b5c9f123-c3a9-4e34-af94-93987304e6ab">
|
||||
<Crew PersonID="088ac9b6-6d45-407e-9774-5ca453c8097b" Position="C" />
|
||||
<Crew PersonID="01ab3d71-6d0f-481f-aa43-eb009dae7458" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="fe961490-d86c-4ef1-b3d7-9783f52a6ca2" TeamName="Helene LEDDERBOGE" BoatID="fe961490-d86c-4ef1-b3d7-9783f52a6ca2">
|
||||
<Crew PersonID="d2d28926-e4a0-4639-a584-d2652eb38b77" Position="C" />
|
||||
<Crew PersonID="e1493195-a79e-459d-ac1e-01e9c19c9beb" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="c42e5a22-7b4f-4b6e-a7fe-97b030c6a7ef" TeamName="Greta STEINICKE" BoatID="c42e5a22-7b4f-4b6e-a7fe-97b030c6a7ef">
|
||||
<Crew PersonID="a17cac90-6e7d-4c39-908e-c729a794cd07" Position="C" />
|
||||
<Crew PersonID="70eadb36-cae7-4725-a397-09557f64472b" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="4bd45adc-d120-4630-9bdf-9bb7014fb128" TeamName="Niklas ENGELMANN" BoatID="4bd45adc-d120-4630-9bdf-9bb7014fb128">
|
||||
<Crew PersonID="840414aa-104f-4724-9810-8867611ed084" Position="C" />
|
||||
<Crew PersonID="fcfdca86-4206-4bcf-82ee-dac7a6b31459" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="6abaaea3-6e3e-478c-b764-9d96552e8814" TeamName="Tatjana HOESCH" BoatID="6abaaea3-6e3e-478c-b764-9d96552e8814">
|
||||
<Crew PersonID="43deabed-ba20-46f1-8ee9-47184bd8e116" Position="C" />
|
||||
<Crew PersonID="522bf39d-0895-4a2c-b417-f0f2fd63e0ef" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="9dec7a3b-c5a1-4486-92bc-a1803a166744" TeamName="Daniel HAMANN" BoatID="9dec7a3b-c5a1-4486-92bc-a1803a166744">
|
||||
<Crew PersonID="7d531088-47ef-463c-9f67-e28254957992" Position="C" />
|
||||
<Crew PersonID="a0c88ef5-20ac-41ce-bda3-1752a251bab1" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="979f7643-5876-4db0-8702-a1fe41859276" TeamName="Hannah PROFITLICH" BoatID="979f7643-5876-4db0-8702-a1fe41859276">
|
||||
<Crew PersonID="c4855233-eb13-40d5-9c3e-4eb6ee70f8c5" Position="C" />
|
||||
<Crew PersonID="a1c01de9-e74b-4755-be5c-cbe05de8ba9d" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="e0da25a6-ec5e-40d3-bcb6-a4a82549b002" TeamName="Hanna WILLE" BoatID="e0da25a6-ec5e-40d3-bcb6-a4a82549b002">
|
||||
<Crew PersonID="e5a72cb2-8339-43bb-b140-0a2966e995e9" Position="C" />
|
||||
<Crew PersonID="c697604f-7c51-44c5-af85-e6f5c7d5c158" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="7e6b50df-22d2-4d9b-b63e-a6029b3a7dbe" TeamName="Matthias LUKOSCH" BoatID="7e6b50df-22d2-4d9b-b63e-a6029b3a7dbe">
|
||||
<Crew PersonID="23186eb0-b7b0-4f57-ac99-1c894b23795d" Position="C" />
|
||||
<Crew PersonID="8512eeb9-b494-46c9-a57e-db20aa55df13" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="e6e11fa4-f324-4a54-8189-a83febb7b011" TeamName="Anissa RENNER" BoatID="e6e11fa4-f324-4a54-8189-a83febb7b011">
|
||||
<Crew PersonID="5b326189-8982-4f97-8f57-b7afae718451" Position="C" />
|
||||
<Crew PersonID="8dd2545b-8988-4be9-8277-1a78010957be" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="e5759181-a9c6-4eef-87ba-ade56239dbfa" TeamName="Marc HILDEBRAND" BoatID="e5759181-a9c6-4eef-87ba-ade56239dbfa">
|
||||
<Crew PersonID="850f5280-5b51-4aa2-bbec-465bcb9ca21c" Position="C" />
|
||||
<Crew PersonID="dba110c6-fed3-4925-847a-44045a8a4f7e" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="0b7f7cf3-d7e1-4a09-b3db-af600fb76ecb" TeamName="Niklas RAUSCH" BoatID="0b7f7cf3-d7e1-4a09-b3db-af600fb76ecb">
|
||||
<Crew PersonID="24570773-0a16-48a3-8a52-32547cc21c2d" Position="C" />
|
||||
<Crew PersonID="4dcb51be-8e6f-4e42-ae9c-dc0edad6683e" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="1692db31-de8e-4170-8b71-b38cf723a150" TeamName="Daniel GÖTTLICH" BoatID="1692db31-de8e-4170-8b71-b38cf723a150">
|
||||
<Crew PersonID="7283a89d-afe9-4f35-becd-94fe15332b61" Position="C" />
|
||||
<Crew PersonID="95a73cff-fa5c-4dae-a96f-77743ca4962a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="2b1657ae-81fd-49ad-a6b5-b6b2e446d31e" TeamName="Nico JANSEN" BoatID="2b1657ae-81fd-49ad-a6b5-b6b2e446d31e">
|
||||
<Crew PersonID="16ae2680-1509-4fdf-9b78-757fe0387d6d" Position="C" />
|
||||
<Crew PersonID="4dfe527f-b344-4acf-ac55-797d3fa5e4ae" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="a20f7bdf-33bc-4b3c-96b4-b79b20d213a3" TeamName="Anton WOLFF" BoatID="a20f7bdf-33bc-4b3c-96b4-b79b20d213a3">
|
||||
<Crew PersonID="4219bcb2-5786-4c55-acba-55bc40a32b7f" Position="C" />
|
||||
<Crew PersonID="44577a33-2638-4157-982a-ffa381208f1a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="6407745e-63fc-413e-9dfd-b7febdeec0c0" TeamName="Marco TARABOCHIA" BoatID="6407745e-63fc-413e-9dfd-b7febdeec0c0">
|
||||
<Crew PersonID="231f0d82-3b14-46ae-a860-8bc73661ba68" Position="C" />
|
||||
<Crew PersonID="4028656a-08bd-4fae-8167-0f480a54cd5a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="ef4672f5-4f0d-41fe-aa3d-bd89513fa42b" TeamName="Clara SCHWIRKMANN" BoatID="ef4672f5-4f0d-41fe-aa3d-bd89513fa42b">
|
||||
<Crew PersonID="a32d9b33-4339-4e96-ba3f-b46087d68750" Position="C" />
|
||||
<Crew PersonID="4ba9cdb8-400c-47f6-8e40-eba0fcc3d6d4" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="d1ce61e2-650a-49f4-b946-c727c153939f" TeamName="Carolin SCHRIMPER" BoatID="d1ce61e2-650a-49f4-b946-c727c153939f">
|
||||
<Crew PersonID="da1cf1be-5e98-46df-bba6-16afa9338e34" Position="C" />
|
||||
<Crew PersonID="eebdfb21-b77e-4feb-9b6d-c325a65d7636" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="7998cd71-41f5-4062-91bc-cb1803978548" TeamName="Elena RIXNER" BoatID="7998cd71-41f5-4062-91bc-cb1803978548">
|
||||
<Crew PersonID="d9a8dc62-ec83-4e69-9f93-5c78949b9167" Position="C" />
|
||||
<Crew PersonID="91d1aee4-bc30-4774-8fbf-ab9a48b0ae8b" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="d8b7e4f6-ecd1-4e7e-8428-d4ba5dd2c130" TeamName="Steven GÜNTHER" BoatID="d8b7e4f6-ecd1-4e7e-8428-d4ba5dd2c130">
|
||||
<Crew PersonID="f9969008-f1e1-44dc-9d98-f84f54fe6f5c" Position="C" />
|
||||
<Crew PersonID="337f3d48-874e-4249-a04b-6d3bc161db1d" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="4c2287ca-80b5-4d77-be2f-d73f0a559ad5" TeamName="Carolin SCHAAFF" BoatID="4c2287ca-80b5-4d77-be2f-d73f0a559ad5">
|
||||
<Crew PersonID="7ebfee8b-55da-4886-9a03-5ad3ad533a53" Position="C" />
|
||||
<Crew PersonID="7b43909c-da44-4105-a88a-788eb2c3dfaa" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="3f9bdabe-a088-4e06-af9c-d9db9d31dd06" TeamName="Inga-Marie HOFMANN" BoatID="3f9bdabe-a088-4e06-af9c-d9db9d31dd06">
|
||||
<Crew PersonID="4a82abee-f464-4cd8-a0a9-ae5c77c27685" Position="C" />
|
||||
<Crew PersonID="c78bd123-bf7b-4a6f-9cf7-bcbac0e9893d" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="5fa4b362-5294-4ac7-a9f9-dac7e17431ba" TeamName="Vitus HUBER" BoatID="5fa4b362-5294-4ac7-a9f9-dac7e17431ba">
|
||||
<Crew PersonID="8ce9957b-f9f5-4de2-9473-f508d8225347" Position="C" />
|
||||
<Crew PersonID="63fbcdb7-8db2-4595-a88f-f0adc0eae128" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="cb9673c2-2842-4a34-b615-dbb881717101" TeamName="J. Mika TROSIEN" BoatID="cb9673c2-2842-4a34-b615-dbb881717101">
|
||||
<Crew PersonID="2d162999-1ffc-4297-990e-b76674dbdf62" Position="C" />
|
||||
<Crew PersonID="716d25e6-1868-45f2-8a90-86626c1e6261" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="7cda1e6b-2e11-4d13-9009-dc11b691a800" TeamName="Philipp ROYLA" BoatID="7cda1e6b-2e11-4d13-9009-dc11b691a800">
|
||||
<Crew PersonID="0b241894-5e4a-4749-a24d-aac80e93215c" Position="C" />
|
||||
<Crew PersonID="c09591e1-d0f3-4ec0-85b6-e9d720eb82d3" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="516341c7-f44b-4d23-ab34-dda53584c50b" TeamName="Steven GÜNTHER" BoatID="516341c7-f44b-4d23-ab34-dda53584c50b">
|
||||
<Crew PersonID="44911916-7803-4bd8-8257-ad1e4435f384" Position="C" />
|
||||
<Crew PersonID="d98f5132-ac42-45f2-ac6b-153f44801c78" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="b4469821-ea1d-4252-84f1-e0bb03a2fe50" TeamName="Tim STEUBER" BoatID="b4469821-ea1d-4252-84f1-e0bb03a2fe50">
|
||||
<Crew PersonID="4e2492a7-69b8-4966-8b1e-31be62899b6f" Position="C" />
|
||||
<Crew PersonID="800c4191-2233-404b-9c4c-dd29b2d81b6a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="2fa7c10d-46aa-410f-9c16-e40c417659e2" TeamName="Ole MÖLLER" BoatID="2fa7c10d-46aa-410f-9c16-e40c417659e2">
|
||||
<Crew PersonID="6a1b56ee-bc33-4a5d-ad70-67d38977b2a1" Position="C" />
|
||||
<Crew PersonID="ff798273-ac5f-4551-8efb-9146081398d4" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="a6b5ba21-3241-47c5-b302-e699d79a7aec" TeamName="Bjarne STUDT" BoatID="a6b5ba21-3241-47c5-b302-e699d79a7aec">
|
||||
<Crew PersonID="683d0ac8-fdbe-437f-86f6-225bde8c5d2a" Position="C" />
|
||||
<Crew PersonID="d10a2275-dcaa-478d-b3fb-efc344dea38a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="5a6bcb54-c91b-4de8-81db-e9b1bdf248fd" TeamName="Hannes BRÜCKNER" BoatID="5a6bcb54-c91b-4de8-81db-e9b1bdf248fd">
|
||||
<Crew PersonID="8ece290d-c0cd-418d-96c8-a159ba09e177" Position="C" />
|
||||
<Crew PersonID="153d363d-6c08-4ce3-804e-e0cd6e8be4b1" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="d7bd4a79-3341-40aa-8d13-eac2d7d0fb2b" TeamName="Julius THOMAS" BoatID="d7bd4a79-3341-40aa-8d13-eac2d7d0fb2b">
|
||||
<Crew PersonID="1a5604f1-a863-4a33-9c9a-de5253a6c783" Position="C" />
|
||||
<Crew PersonID="71f09957-41a8-4945-896f-5030d383ecb6" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="426aeb29-bc5c-462c-b9e8-ece7fef8922b" TeamName="Katja FALTIN" BoatID="426aeb29-bc5c-462c-b9e8-ece7fef8922b">
|
||||
<Crew PersonID="f7980da1-4569-4fa6-a2d7-31771682a750" Position="C" />
|
||||
<Crew PersonID="5a479457-9f4f-43ed-834c-c78d29843acb" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="c148a293-7ac5-4305-a855-f4228ff24756" TeamName="Maximilian HEILINGBRUNNER" BoatID="c148a293-7ac5-4305-a855-f4228ff24756">
|
||||
<Crew PersonID="b2907afa-dadf-4e73-b474-7b8c428e1a91" Position="C" />
|
||||
<Crew PersonID="aed68885-740e-4117-80dc-9d828ac5c437" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="f5cc2b9b-a1c2-491c-b517-f4553f1cf950" TeamName="Maike ROOS" BoatID="f5cc2b9b-a1c2-491c-b517-f4553f1cf950">
|
||||
<Crew PersonID="45fe798e-4e11-42ea-83d5-bee287b8d971" Position="C" />
|
||||
<Crew PersonID="91bb3029-8354-4f0f-86ce-2fe56b849c16" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="c6b471bf-c529-4046-8ded-f6a6ff8aa922" TeamName="Paul FELDHUSEN" BoatID="c6b471bf-c529-4046-8ded-f6a6ff8aa922">
|
||||
<Crew PersonID="a215a528-f68e-4548-8849-db33b6fda141" Position="C" />
|
||||
<Crew PersonID="f8b7edbc-c892-4ea6-a769-5a5c535267fc" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="de3db693-3ff6-4f0a-b1cb-f6e9dc687171" TeamName="Lea LUDOWIG" BoatID="de3db693-3ff6-4f0a-b1cb-f6e9dc687171">
|
||||
<Crew PersonID="79bdc3b7-30ff-4f3d-9820-9b464959aa79" Position="C" />
|
||||
<Crew PersonID="91f4c4cc-8ae4-436a-a4e6-36530d4de8fc" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="1dfc46ec-e5ad-4f2e-80a3-fb6e58ccb809" TeamName="Victor HELLMANN" BoatID="1dfc46ec-e5ad-4f2e-80a3-fb6e58ccb809">
|
||||
<Crew PersonID="9346bcc3-b4ea-4b0b-9603-4cf5f181a878" Position="C" />
|
||||
<Crew PersonID="e8c92676-e247-45df-af5b-e1ab03220a4e" Position="S" />
|
||||
</Team>
|
||||
<Event EventID="17733a60-305c-4142-98ef-40423449f3be" IFEventID="" Title="IDJM 2015 - 420er" Type="Regatta">
|
||||
<Division DivisionID="cd23aa66-81bc-4ae3-ba36-fa03446762b1" IFClassID="" Title="420" Gender="Open">
|
||||
<SeriesResult TeamID="cd6b32e6-083e-43e9-b3e9-01ce345e24ad" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="cca150d9-fa20-4198-bde3-03328cbbfd74" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="436d998b-1014-4134-b5fa-0846a42a9b7d" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="247c800a-34be-4214-8b2a-09382747166e" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="2c96d7b2-530b-440c-a5b2-0d7d74ef9736" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="68fd4c8d-cdd8-43c6-ac0a-0d9867aa1258" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="2ad51eb4-565e-49dd-9500-127e2c464140" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="c76d99e8-1c87-4031-a540-134d7184938e" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="182c1447-a8fc-468b-bbb8-150ce93fe7aa" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="913e4b8b-3969-48d5-997e-173866d9cf12" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="2ab4c435-2903-4d92-aebe-194855253bbe" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="d4c4f67d-146e-4824-b7cc-1a779fb52da3" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="c5bcab3d-7bda-4920-b08a-1a8526513977" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="2868d4c2-3277-4c53-bcaf-1d4eeb63f6dc" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="5990b1c2-49a7-48da-be8c-201377b8258b" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="9ac92fcb-c92e-46fd-87c5-233d3ee1e999" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="69e30610-daa1-44ef-98ff-25b00184dd98" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="387bbf98-0750-4883-8d22-27cbedb817d1" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="35861ced-bd84-42f6-8fb9-2910c9d6760d" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="043e2b5b-75aa-4419-a211-2c50607b56dd" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="d044cdd5-357d-4e5b-b964-2ca915a5e8a6" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="74690a41-e33a-4cf9-a4cb-301f60c97069" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="faa2f7ba-ae47-4055-bef2-34f29a110390" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="118f3318-f7b2-4b1b-b21c-39b194997575" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="0042539a-787a-46d8-9c98-3a7e2b443534" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="1ce8f554-5b82-4d5f-8a3f-3bbc21667ecd" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="2992c30c-a6af-4df2-98e9-3decede41491" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="a1677e96-ca01-4fa3-ae65-3e0dfed67d01" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="f2628232-d174-4339-abdd-3f53c6cfbd23" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="eb7e2b1c-dda2-4287-8d78-3fa91a4f4922" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="eafcd70a-4f8f-4e9d-88ad-410ccb5e0921" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="b9fb95b0-9b8d-4bda-ac5b-41680e4bc400" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="90180931-071e-4146-9049-4342a1655c5c" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="3834c352-0f9b-4d65-92b3-44f362a2fbd2" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="ad78a2f2-e194-41c8-a05f-464775e7ee90" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="90b7bbf4-43f5-4e0f-a560-466364dc38cd" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="560bb947-ee4d-4fee-ba48-4c30eb952c26" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="c273cbff-777f-4899-b3e3-50b22dfc9273" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="f0d26b19-c46f-45b4-bfd4-52f9d4332190" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="80a25bc3-fac5-4ee6-8ea7-53fc41195622" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="d4090880-de5e-4523-b6a9-5591af7c44a2" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="fb2ab1de-b247-4991-9e33-565d2491756a" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="b2853195-8cd6-4809-ae50-5b32aa367b39" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="1a6206be-c361-473e-9153-5c192e20a58e" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="eb885b41-b283-43f3-9613-5caf2202d2fd" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="6d1e637c-1a77-4cd3-95ec-5da1e8bba65c" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="69901990-703b-4372-bd4c-61a8715456df" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="f96ae88f-4cf3-4357-a00c-689d072a9871" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="6f814f6e-35ff-4a3a-aef8-698192319f3d" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="05c02c25-123b-416a-85da-6c7765d17cd6" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="9c9564b0-2b96-4b58-8cf0-6e7b0fe6d10f" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="e09ff060-3a17-4239-916a-746d16203c53" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="6d06b1aa-93bb-40cc-ae50-75481d0ba1ed" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="34b98046-d8ec-482f-8200-7c56c8105983" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="2dfd4897-c70e-4601-a20c-7d3b40d5ae03" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="7688826a-62be-4d51-81bc-81fe6fec962a" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="959cf112-6941-4910-a441-8bcde7ac82b5" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="7f1e1631-25f8-461d-ae71-8c4a0a0ba8ff" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="16fb6511-3bf8-4eca-977c-8d75a39bf728" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="6726f0a9-e4cd-4740-993c-8e4a26f9911f" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="25177dce-27c1-4840-9ced-8fcb614f679e" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="f11899d1-805b-4af4-a4a0-9055b63c701a" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="9015f49b-44d1-453b-a2a7-92f1cd4f9956" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="b5c9f123-c3a9-4e34-af94-93987304e6ab" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="fe961490-d86c-4ef1-b3d7-9783f52a6ca2" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="c42e5a22-7b4f-4b6e-a7fe-97b030c6a7ef" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="4bd45adc-d120-4630-9bdf-9bb7014fb128" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="6abaaea3-6e3e-478c-b764-9d96552e8814" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="9dec7a3b-c5a1-4486-92bc-a1803a166744" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="979f7643-5876-4db0-8702-a1fe41859276" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="e0da25a6-ec5e-40d3-bcb6-a4a82549b002" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="7e6b50df-22d2-4d9b-b63e-a6029b3a7dbe" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="e6e11fa4-f324-4a54-8189-a83febb7b011" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="e5759181-a9c6-4eef-87ba-ade56239dbfa" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="0b7f7cf3-d7e1-4a09-b3db-af600fb76ecb" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="1692db31-de8e-4170-8b71-b38cf723a150" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="2b1657ae-81fd-49ad-a6b5-b6b2e446d31e" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="a20f7bdf-33bc-4b3c-96b4-b79b20d213a3" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="6407745e-63fc-413e-9dfd-b7febdeec0c0" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="ef4672f5-4f0d-41fe-aa3d-bd89513fa42b" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="d1ce61e2-650a-49f4-b946-c727c153939f" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="7998cd71-41f5-4062-91bc-cb1803978548" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="d8b7e4f6-ecd1-4e7e-8428-d4ba5dd2c130" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="4c2287ca-80b5-4d77-be2f-d73f0a559ad5" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="3f9bdabe-a088-4e06-af9c-d9db9d31dd06" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="5fa4b362-5294-4ac7-a9f9-dac7e17431ba" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="cb9673c2-2842-4a34-b615-dbb881717101" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="7cda1e6b-2e11-4d13-9009-dc11b691a800" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="516341c7-f44b-4d23-ab34-dda53584c50b" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="b4469821-ea1d-4252-84f1-e0bb03a2fe50" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="2fa7c10d-46aa-410f-9c16-e40c417659e2" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="a6b5ba21-3241-47c5-b302-e699d79a7aec" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="5a6bcb54-c91b-4de8-81db-e9b1bdf248fd" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="d7bd4a79-3341-40aa-8d13-eac2d7d0fb2b" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="426aeb29-bc5c-462c-b9e8-ece7fef8922b" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="c148a293-7ac5-4305-a855-f4228ff24756" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="f5cc2b9b-a1c2-491c-b517-f4553f1cf950" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="c6b471bf-c529-4046-8ded-f6a6ff8aa922" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="de3db693-3ff6-4f0a-b1cb-f6e9dc687171" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
<SeriesResult TeamID="1dfc46ec-e5ad-4f2e-80a3-fb6e58ccb809" TotalPoints="0" NetPoints="0" Rank="0" />
|
||||
</Division>
|
||||
<Race RaceID="b5d1e5b9-56c5-4b48-b99c-5c030319cc73" RaceName="Q1 Yellow" RaceNumber="1" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="ee4f5208-ba80-420d-99bd-4027f7a959a1" RaceName="Q1 Blue" RaceNumber="1" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="a921cd83-e9e0-423e-9f8c-4b0c24874814" RaceName="Q2 Yellow" RaceNumber="2" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="b3838b21-43f0-4bee-a1b4-6c388ceeba9a" RaceName="Q2 Blue" RaceNumber="2" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="bc543d0c-5787-4ab5-be7a-e9362a6fbf27" RaceName="Q3 Yellow" RaceNumber="3" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="c017cb05-fed8-4529-9a0f-56faf781b0dc" RaceName="Q3 Blue" RaceNumber="3" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="5f51e955-47ea-4acb-8005-8744894b7da3" RaceName="Q4 Blue" RaceNumber="4" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="264c4c84-8f8e-437a-b01c-6fcc0e8acfa6" RaceName="Q4 Yellow" RaceNumber="4" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="e143143e-caeb-4c74-9524-b9738c48742e" RaceName="Q5 Yellow" RaceNumber="5" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="005254d5-5611-4dd8-b7fe-fb09041cbc58" RaceName="Q5 Blue" RaceNumber="5" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="d19d25be-4c96-46da-9aea-f773aa0aa88b" RaceName="Q6 Blue" RaceNumber="6" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="f3514e80-e087-473b-a6b6-5c5c9a2636b3" RaceName="Q6 Yellow" RaceNumber="6" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="c52b556b-a050-4310-9ee6-7d961950bafb" RaceName="F1 Gold" RaceNumber="7" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="553e25d2-1c56-4bea-8f82-f2bfcf9de359" RaceName="F1 Silver" RaceNumber="7" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="70cf1706-7751-4d3d-8aa1-8ed1f2e70be7" RaceName="F2 Gold" RaceNumber="8" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="d36d5336-177c-48b0-8957-f74bbf85e463" RaceName="F2 Silver" RaceNumber="8" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="4b3e191c-2e2e-46bf-b29c-b594139f3894" RaceName="F3 Silver" RaceNumber="9" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="4a6fa2b9-d883-4d35-8812-622311684e2b" RaceName="F3 Gold" RaceNumber="9" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="c9c5dd3d-167a-41ee-aa4e-4a845a1e03d5" RaceName="F4 Silver" RaceNumber="10" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="59e53563-5a2f-406e-b19e-a5237ee370b7" RaceName="F4 Gold" RaceNumber="10" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="563a78db-a76a-4410-a89b-e8f9c060fd35" RaceName="F5 Silver" RaceNumber="11" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="b08500d0-048f-44e1-8d7e-9ff1940c5b6a" RaceName="F5 Gold" RaceNumber="11" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="241a2091-d053-440f-8187-a167da4df1b4" RaceName="F6 Gold" RaceNumber="12" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="797d94fa-3734-4b90-88bc-d110c0c3c0c1" RaceName="F6 Silver" RaceNumber="12" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
</Event>
|
||||
</SailingXRR>
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"Id":"17733a60-305c-4142-98ef-40423449f3be","Name":"IDJM 2015 - 420er","XrrUrl":"http://manage2sail.com/en-US/Home/DownloadXrr/event/17733a60-305c-4142-98ef-40423449f3be/regatta","Regattas":[{"Id":"cd23aa66-81bc-4ae3-ba36-fa03446762b1","Name":"420","Gender":"Open","ClassName":"420","PdfUrl":"","XrrEntriesUrl":"file:./bin/VSaW_420_Test_EmptyDivision.xml","XrrPreliminaryUrl":"http://manage2sail.com/en-US/Home/DownloadXrr/event/17733a60-305c-4142-98ef-40423449f3be/regatta/cd23aa66-81bc-4ae3-ba36-fa03446762b1?xrrType=PreliminaryResults","XrrFinalUrl":"http://manage2sail.com/en-US/Home/DownloadXrr/event/17733a60-305c-4142-98ef-40423449f3be/regatta/cd23aa66-81bc-4ae3-ba36-fa03446762b1?xrrType=FinalResults","HtmlUrl":"http://manage2sail.com/en-US/Home/ResultsFragment/event/17733a60-305c-4142-98ef-40423449f3be/regatta/cd23aa66-81bc-4ae3-ba36-fa03446762b1"}]}
|
||||
+729
@@ -0,0 +1,729 @@
|
||||
<SailingXRR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.sailing.org/uploads/xml/sailingXRR_v1.3.xsd" Date="2015-09-24+02:00" Time="17:54:32+02:00" Type="SailingXRR" Version="1.3.1">
|
||||
<Person PersonID="4dd872be-c74f-4ec5-907d-1ef72d355a02" IFPersonID="" FamilyName="HEINBÜCHER" GivenName="Markus" NOC="" Gender="Male" />
|
||||
<Person PersonID="917dd02f-f285-47e7-aaae-74c15d464b76" IFPersonID="" FamilyName="WALKEMBACH" GivenName="Benedikt" NOC="" Gender="Male" />
|
||||
<Person PersonID="0ca62ba5-bc73-444d-85bb-3dd9de60974e" IFPersonID="" FamilyName="HOFMANN" GivenName="Kai-Steffen" NOC="" Gender="Male" />
|
||||
<Person PersonID="8530bea0-24b3-4777-92fc-0203b1768404" IFPersonID="" FamilyName="TAST" GivenName="Valentina" NOC="" Gender="Female" />
|
||||
<Person PersonID="fbd25e61-eae8-4eb4-8a33-963447feee5c" IFPersonID="" FamilyName="LEMBCKE" GivenName="Tom" NOC="" Gender="Male" />
|
||||
<Person PersonID="130158cb-8024-41a4-ad61-880dd7ae1bd6" IFPersonID="" FamilyName="STEIDLE" GivenName="Konstantin" NOC="" Gender="Male" />
|
||||
<Person PersonID="05074078-d6fb-4ecc-90b9-14651bc6b3c5" IFPersonID="" FamilyName="BRAUN-DULLAEUS" GivenName="Julius" NOC="" Gender="Male" />
|
||||
<Person PersonID="1f2411fc-7a3e-46c3-b8cb-3b86d9c70272" IFPersonID="" FamilyName="STRUCHHOLZ" GivenName="Janek" NOC="" Gender="Male" />
|
||||
<Person PersonID="6233565e-45f7-443f-9d76-f5f700120b55" IFPersonID="" FamilyName="SPRANDEL" GivenName="Isabel" NOC="" Gender="Female" />
|
||||
<Person PersonID="2d7fd320-2502-4289-8157-6f0506816452" IFPersonID="" FamilyName="THORNS" GivenName="Lynn" NOC="" Gender="Female" />
|
||||
<Person PersonID="88fddbd9-a504-4eee-bf0d-e5c1fb2062aa" IFPersonID="" FamilyName="FRÖHLICH" GivenName="Klara" NOC="" Gender="Female" />
|
||||
<Person PersonID="e06bd015-7ede-477a-be0a-7a647950a64f" IFPersonID="" FamilyName="SCHENK" GivenName="Johanna" NOC="" Gender="Female" />
|
||||
<Person PersonID="3e747152-c43a-4daf-8f2e-3292ac0a941a" IFPersonID="" FamilyName="MÜLLER" GivenName="Arvid Jannes" NOC="" Gender="Male" />
|
||||
<Person PersonID="7ddb8f8f-ae44-4d7e-b3a5-a181479e38f5" IFPersonID="" FamilyName="MÜLLER" GivenName="Jolanda Lene" NOC="" Gender="Female" />
|
||||
<Person PersonID="0483b94c-4120-43ce-b561-e7d6358450bf" IFPersonID="" FamilyName="PORTHUN" GivenName="Jonas" NOC="" Gender="Male" />
|
||||
<Person PersonID="a9c04df6-f3c7-49eb-b744-3d78659365ba" IFPersonID="" FamilyName="KRÖPLIN" GivenName="Henning" NOC="" Gender="Male" />
|
||||
<Person PersonID="029c5b9c-333b-4da3-ae78-f0f72923360c" IFPersonID="" FamilyName="RICHLY" GivenName="Marc" NOC="" Gender="Male" />
|
||||
<Person PersonID="e0e4c917-2d16-436d-b718-ed65a1579a81" IFPersonID="" FamilyName="KENTER" GivenName="Finn" NOC="" Gender="Male" />
|
||||
<Person PersonID="d6af23bc-f4f1-404e-b948-fbd4f069cb02" IFPersonID="" FamilyName="SCHLOSSER" GivenName="Otto" NOC="" Gender="Male" />
|
||||
<Person PersonID="f9ddd1e8-d1a7-433f-8036-251508b4d5fe" IFPersonID="" FamilyName="SCHÄFER" GivenName="Analea" NOC="" Gender="Female" />
|
||||
<Person PersonID="fcab0d54-1a4d-4b23-8ac9-fc8d0b290787" IFPersonID="" FamilyName="WILLMS" GivenName="Nele Marie" NOC="" Gender="Female" />
|
||||
<Person PersonID="575535a5-26ea-4443-acc7-b35e2781a4f7" IFPersonID="" FamilyName="KRAMER" GivenName="Maximilian" NOC="" Gender="Male" />
|
||||
<Person PersonID="55cb2f7c-46e2-48f8-9b34-f0517361d6fb" IFPersonID="" FamilyName="KÖHLER" GivenName="Marius" NOC="" Gender="Male" />
|
||||
<Person PersonID="ab2f32ce-c4c1-4634-a265-9f320d9cb017" IFPersonID="" FamilyName="KÖHLER" GivenName="Jessica" NOC="" Gender="Female" />
|
||||
<Person PersonID="418b9db9-6eac-4c77-9611-5d86ccd495b1" IFPersonID="" FamilyName="PINNOW" GivenName="Fritz" NOC="" Gender="Male" />
|
||||
<Person PersonID="d6a8d063-354a-401d-a966-342de8118fe7" IFPersonID="" FamilyName="SCHLÜTER" GivenName="Lucas" NOC="" Gender="Male" />
|
||||
<Person PersonID="b7f22693-a0b5-4c67-9b6b-28fb39cf7ff8" IFPersonID="" FamilyName="SCHEWE" GivenName="Svenja" NOC="" Gender="Female" />
|
||||
<Person PersonID="5ae49552-1097-4f04-87df-4fdc90ba16e9" IFPersonID="" FamilyName="WESTPHALEN" GivenName="Frederike" NOC="" Gender="Female" />
|
||||
<Person PersonID="6ac9d970-2026-40d9-9205-49a15b55a1a4" IFPersonID="" FamilyName="BEILKEN" GivenName="Till" NOC="" Gender="Male" />
|
||||
<Person PersonID="5737cb50-9b73-4446-97a1-86317c0dae59" IFPersonID="" FamilyName="HALLE" GivenName="Julian" NOC="" Gender="Male" />
|
||||
<Person PersonID="9828e904-a945-4f97-a6cb-ee1a00c705e4" IFPersonID="" FamilyName="ECKMANN" GivenName="Lasse" NOC="" Gender="Male" />
|
||||
<Person PersonID="e937c6b5-6edc-462b-b4f8-c465656ffc6a" IFPersonID="" FamilyName="PETERSON" GivenName="Jan" NOC="" Gender="Male" />
|
||||
<Person PersonID="ec63fc3e-5a8c-4bc2-8e06-dce462d84146" IFPersonID="" FamilyName="FOLTINEK" GivenName="Emilia" NOC="" Gender="Female" />
|
||||
<Person PersonID="6d634781-abed-4c17-820b-2551fc8501d5" IFPersonID="" FamilyName="KLEIß" GivenName="Melissa" NOC="" Gender="Female" />
|
||||
<Person PersonID="cfd23e5c-9dae-4b53-ba2f-439f8a6b6ddb" IFPersonID="" FamilyName="ADE" GivenName="Christof" NOC="" Gender="Male" />
|
||||
<Person PersonID="ae2b47b1-83ce-4417-94af-19a5b3a2605a" IFPersonID="" FamilyName="HEGER" GivenName="Moritz" NOC="" Gender="Male" />
|
||||
<Person PersonID="aa5e9c9f-1393-4ba4-ad28-84cc4bbecb63" IFPersonID="" FamilyName="KLASEN" GivenName="Maria Regina" NOC="" Gender="Female" />
|
||||
<Person PersonID="cb8d4c23-0d73-45fa-aac3-7978fb253987" IFPersonID="" FamilyName="KRALLMANN" GivenName="Anna" NOC="" Gender="Female" />
|
||||
<Person PersonID="fabd5664-1339-46e5-b4ed-110f794a317d" IFPersonID="" FamilyName="MUNZ" GivenName="Oliver" NOC="" Gender="Male" />
|
||||
<Person PersonID="f3d214e9-4652-4192-9817-bbeee94efaba" IFPersonID="" FamilyName="SIEWEKE" GivenName="Tobias" NOC="" Gender="Male" />
|
||||
<Person PersonID="5cf95655-605c-45dc-a5af-61a677f4f39a" IFPersonID="" FamilyName="HALL" GivenName="Philip" NOC="" Gender="Male" />
|
||||
<Person PersonID="25604e0d-2617-41aa-b495-8f6602543ca3" IFPersonID="" FamilyName="von WEIDENBACH" GivenName="Moritz" NOC="" Gender="Male" />
|
||||
<Person PersonID="4ebd46ce-18a8-4635-b8cd-ac9ee82f2e78" IFPersonID="" FamilyName="BENNET" GivenName="Nis" NOC="" Gender="Male" />
|
||||
<Person PersonID="371b2519-0883-4a0f-8a74-96cef3dc53bd" IFPersonID="" FamilyName="PICH" GivenName="Moritz" NOC="" Gender="Male" />
|
||||
<Person PersonID="1226cc52-a949-41a1-866f-f5a663082697" IFPersonID="" FamilyName="BAHR" GivenName="Vivien" NOC="" Gender="Female" />
|
||||
<Person PersonID="81aad5b7-1049-4a49-9db6-603ab3c959e3" IFPersonID="" FamilyName="LORENZ" GivenName="Marie" NOC="" Gender="Female" />
|
||||
<Person PersonID="9bd7d06b-52aa-48dd-a35c-cedd3c96f42f" IFPersonID="" FamilyName="GERRITZEN" GivenName="Finn" NOC="" Gender="Male" />
|
||||
<Person PersonID="13e84701-beb0-4f81-ab44-6b923347b5b3" IFPersonID="" FamilyName="FISCHER" GivenName="Eric" NOC="" Gender="Male" />
|
||||
<Person PersonID="2d782627-107f-490d-9029-d6d86c6e3290" IFPersonID="" FamilyName="POLTZE" GivenName="Victoria" NOC="" Gender="Female" />
|
||||
<Person PersonID="0fe0f8a8-c851-49f3-a267-2f1342194191" IFPersonID="" FamilyName="POLTZE" GivenName="Patricia" NOC="" Gender="Female" />
|
||||
<Person PersonID="31a11cc2-0313-4390-b241-a841b00e8bb1" IFPersonID="" FamilyName="EISENLOHR" GivenName="Sarah" NOC="" Gender="Female" />
|
||||
<Person PersonID="d2504b6f-18c7-4723-8240-7db069c9e17f" IFPersonID="" FamilyName="HAGEN" GivenName="Hannah" NOC="" Gender="Female" />
|
||||
<Person PersonID="331da431-50b6-4e76-a58d-27c7eeecbbde" IFPersonID="" FamilyName="WENNZEL" GivenName="Annika" NOC="" Gender="Female" />
|
||||
<Person PersonID="8d06fef3-dd9a-4e04-9027-945fee96b9e8" IFPersonID="" FamilyName="BERGMANN" GivenName="Marla" NOC="" Gender="Female" />
|
||||
<Person PersonID="e075e7a1-595d-4e86-88d8-45c3408c354a" IFPersonID="" FamilyName="MIEBACH" GivenName="Caspar" NOC="" Gender="Male" />
|
||||
<Person PersonID="4773e605-5883-4327-9cb3-3eb4974fed91" IFPersonID="" FamilyName="SCHÖNFELDT" GivenName="Tom Luis" NOC="" Gender="Male" />
|
||||
<Person PersonID="728e3188-ec5e-492f-8e33-ec483bf62565" IFPersonID="" FamilyName="KRAUSE" GivenName="Max" NOC="" Gender="Male" />
|
||||
<Person PersonID="3e4329f8-6926-4f33-bf37-bb2db041aad9" IFPersonID="" FamilyName="AHLERS" GivenName="Jacob" NOC="" Gender="Male" />
|
||||
<Person PersonID="6ecfc9af-2d59-4a73-ae7c-b94148697c47" IFPersonID="" FamilyName="BUNKE" GivenName="Milia" NOC="" Gender="Female" />
|
||||
<Person PersonID="1e690a9f-5d50-4f67-b034-30c89506df6f" IFPersonID="" FamilyName="ELLERMANN" GivenName="Anna" NOC="" Gender="Female" />
|
||||
<Person PersonID="36164b26-5999-4a8a-bbfe-e7f9a3224d1a" IFPersonID="" FamilyName="SPOHR" GivenName="Simon" NOC="" Gender="Male" />
|
||||
<Person PersonID="f5692240-e12f-471b-a469-bcde7819ef37" IFPersonID="" FamilyName="BRUGMANS" GivenName="Aliska" NOC="" Gender="Female" />
|
||||
<Person PersonID="3bd81fbe-9b3e-4c87-a7ce-eac7de2ed5ad" IFPersonID="" FamilyName="TOETZ" GivenName="Lena" NOC="" Gender="Female" />
|
||||
<Person PersonID="b07d6130-2819-46e2-af20-e43938557ae0" IFPersonID="" FamilyName="GOTTUK" GivenName="Jannika" NOC="" Gender="Female" />
|
||||
<Person PersonID="b5fc1ad8-72b2-4a91-9720-5a2f5ec01b2d" IFPersonID="" FamilyName="BORBET" GivenName="Lea" NOC="" Gender="Female" />
|
||||
<Person PersonID="908b2c60-b1db-4666-9665-58374b0106f7" IFPersonID="" FamilyName="BORBET" GivenName="Jan" NOC="" Gender="Male" />
|
||||
<Person PersonID="19094afe-a67e-485f-b9b4-5640f861404a" IFPersonID="" FamilyName="ULRICH" GivenName="Ole" NOC="" Gender="Male" />
|
||||
<Person PersonID="323cf154-d597-45c2-90fb-0c96146a4867" IFPersonID="" FamilyName="KOSANKE" GivenName="Leonard" NOC="" Gender="Male" />
|
||||
<Person PersonID="ac3f0c4f-1b2c-4c3b-9df8-4278ba7eac2e" IFPersonID="" FamilyName="LAMPE" GivenName="Emilia" NOC="" Gender="Female" />
|
||||
<Person PersonID="0c39d674-6ba5-4b9d-bf33-ef2c845755c7" IFPersonID="" FamilyName="MOMM" GivenName="Ava" NOC="" Gender="Female" />
|
||||
<Person PersonID="c6cfa658-f40f-420e-ae1d-5c8fe4332646" IFPersonID="" FamilyName="SUAREZ" GivenName="Lucas" NOC="" Gender="Male" />
|
||||
<Person PersonID="12f2191c-2990-4a8e-b976-a1a4a366d565" IFPersonID="" FamilyName="GFRÖRER" GivenName="Antonia" NOC="" Gender="Female" />
|
||||
<Person PersonID="c8681fa0-9ad2-44f1-8786-95c44eecaccb" IFPersonID="" FamilyName="THIELEMANN" GivenName="Line Johanna" NOC="" Gender="Female" />
|
||||
<Person PersonID="7c0084e7-6516-4d64-abea-3285022843e5" IFPersonID="" FamilyName="SCHÖNE" GivenName="Sofie" NOC="" Gender="Female" />
|
||||
<Person PersonID="5d606c13-4edf-43bb-b041-720de799f10c" IFPersonID="" FamilyName="FRICKE" GivenName="Leonie" NOC="" Gender="Female" />
|
||||
<Person PersonID="e3b73402-446c-4822-b4a9-a57d46edb79d" IFPersonID="" FamilyName="OSTERMANN" GivenName="Anneke" NOC="" Gender="Female" />
|
||||
<Person PersonID="e0f2b284-f4bf-4db8-994c-0b2fd72268d2" IFPersonID="" FamilyName="HEINRICH" GivenName="Charlotte" NOC="" Gender="Female" />
|
||||
<Person PersonID="8f608fef-18e9-4b15-8921-ee16465b4dc4" IFPersonID="" FamilyName="SCHMOLKE" GivenName="Marlene" NOC="" Gender="Female" />
|
||||
<Person PersonID="8fd4fdfa-2ad8-487a-9011-d371945b75ea" IFPersonID="" FamilyName="FELSKE" GivenName="Veit" NOC="" Gender="Male" />
|
||||
<Person PersonID="3f9cd255-ac1d-4687-85e7-f9fbb55ca128" IFPersonID="" FamilyName="WENZKE" GivenName="Christopher" NOC="" Gender="Male" />
|
||||
<Person PersonID="916ee320-6212-4048-9fb0-12f2084bcf2f" IFPersonID="" FamilyName="SCHMIDT" GivenName="Andreas" NOC="" Gender="Male" />
|
||||
<Person PersonID="b48e9cac-9062-4df7-baf4-481e6178cb7e" IFPersonID="" FamilyName="HASSE" GivenName="Lucia" NOC="" Gender="Female" />
|
||||
<Person PersonID="9d0a08dd-53cc-4d0e-8076-ed8609776238" IFPersonID="" FamilyName="HAIMERL" GivenName="Benedikt" NOC="" Gender="Male" />
|
||||
<Person PersonID="b3299431-4885-4a60-9fa5-69f4c270ea8b" IFPersonID="" FamilyName="HUBER" GivenName="Xaver" NOC="" Gender="Male" />
|
||||
<Person PersonID="0d52b721-7d3d-4147-b436-65706abaeb33" IFPersonID="" FamilyName="JUNG" GivenName="Moritz" NOC="" Gender="Male" />
|
||||
<Person PersonID="6e8c609c-9152-4d7c-9b29-cef2145b9752" IFPersonID="" FamilyName="KRÜGER" GivenName="Mats" NOC="" Gender="Male" />
|
||||
<Person PersonID="3c51d3e7-0f02-4576-8173-df32c6abde6b" IFPersonID="" FamilyName="SCHMIDT" GivenName="Martin" NOC="" Gender="Male" />
|
||||
<Person PersonID="74cb0ecf-b466-4d39-96e5-3ace3f4e0d0f" IFPersonID="" FamilyName="von CRAMON" GivenName="Emanuel" NOC="" Gender="Male" />
|
||||
<Person PersonID="a06ad28a-97ee-4a46-8385-e09466d81edf" IFPersonID="" FamilyName="FERNHOLZ" GivenName="Kim" NOC="" Gender="Female" />
|
||||
<Person PersonID="ce08a0b5-7224-4a06-85dc-c65cdabb188f" IFPersonID="" FamilyName="OFFERGELD" GivenName="My Hoa Marie" NOC="" Gender="Female" />
|
||||
<Person PersonID="1b0b5c44-600f-4e74-bcbe-a55e57a73c23" IFPersonID="" FamilyName="ROPOHL" GivenName="Jakob" NOC="" Gender="Male" />
|
||||
<Person PersonID="4a0b89b3-215d-4e90-8c4c-7a562bb56879" IFPersonID="" FamilyName="STILKENBÄUMER" GivenName="Tim" NOC="" Gender="Male" />
|
||||
<Person PersonID="b8502c66-9b31-4879-bce6-a5af856c1389" IFPersonID="" FamilyName="ARP" GivenName="Paul" NOC="" Gender="Male" />
|
||||
<Person PersonID="52466a0d-3b51-43ba-972e-52b8a46cbc11" IFPersonID="" FamilyName="KUSS" GivenName="Lennart" NOC="" Gender="Male" />
|
||||
<Person PersonID="af31781a-c280-44c4-ae51-982ea4c09d6d" IFPersonID="" FamilyName="CHASSOL" GivenName="Luise" NOC="" Gender="Female" />
|
||||
<Person PersonID="29c44d21-23ac-40be-bb94-2073df1cbd2e" IFPersonID="" FamilyName="KLAMMT" GivenName="Ulrika" NOC="" Gender="Female" />
|
||||
<Person PersonID="5cff16ee-e2ef-4f3b-a30f-841d04a3135c" IFPersonID="" FamilyName="HEILINGBRUNNER" GivenName="Theresa" NOC="" Gender="Female" />
|
||||
<Person PersonID="46e7cfd4-96c2-4375-a32e-8503ac6e9562" IFPersonID="" FamilyName="LÖFFLER" GivenName="Theresa" NOC="" Gender="Female" />
|
||||
<Person PersonID="b148bbdf-3d4b-436f-a58a-2b3f4f789533" IFPersonID="" FamilyName="GRAFF" GivenName="Felix" NOC="" Gender="Male" />
|
||||
<Person PersonID="8ebba8ef-f30b-42fc-8c67-c5e6826435c5" IFPersonID="" FamilyName="BRUGMANS" GivenName="Arend" NOC="" Gender="Male" />
|
||||
<Person PersonID="c4b70273-7b6b-4b88-923f-0ce9d0b59ff9" IFPersonID="" FamilyName="DONATH" GivenName="Oliver" NOC="" Gender="Male" />
|
||||
<Person PersonID="61076bcd-4d2b-431c-9350-1f5d2d9a2190" IFPersonID="" FamilyName="VENGER" GivenName="Justin" NOC="" Gender="Male" />
|
||||
<Person PersonID="730522cb-bf20-4eca-8e95-a0cb0e22c91c" IFPersonID="" FamilyName="TORKA" GivenName="Clara Emilia" NOC="" Gender="Female" />
|
||||
<Person PersonID="451ae650-a166-4add-8a63-94a6a135a643" IFPersonID="" FamilyName="TORKA" GivenName="Leon" NOC="" Gender="Male" />
|
||||
<Person PersonID="348ccdb8-eca3-45f6-832b-f550c393daae" IFPersonID="" FamilyName="PLETTNER" GivenName="Lina" NOC="" Gender="Female" />
|
||||
<Person PersonID="7155971e-ba1d-4649-a748-496745cf37e3" IFPersonID="" FamilyName="STEINLEIN" GivenName="Theresa" NOC="" Gender="Female" />
|
||||
<Person PersonID="8a6639d1-26ae-4244-8c72-97af5a4212c7" IFPersonID="" FamilyName="KALETTA" GivenName="Garcia" NOC="" Gender="Female" />
|
||||
<Person PersonID="4f921208-1d79-4e91-9fa1-65952b101578" IFPersonID="" FamilyName="TROSCHKE" GivenName="Aurel" NOC="" Gender="Male" />
|
||||
<Person PersonID="055c2c89-8b9c-4cda-8a27-08a65190656b" IFPersonID="" FamilyName="SCHMIDT-MAAG" GivenName="Katja" NOC="" Gender="Female" />
|
||||
<Person PersonID="c0a9e92b-7243-46ad-8a72-69d6843d310a" IFPersonID="" FamilyName="NEUMANN" GivenName="Lilly" NOC="" Gender="Female" />
|
||||
<Person PersonID="7a6925be-e9d9-486d-9cf0-1e0c506dc19f" IFPersonID="" FamilyName="FIGGE" GivenName="Johanna" NOC="" Gender="Female" />
|
||||
<Person PersonID="34bb85ce-319a-431d-baab-480db0631843" IFPersonID="" FamilyName="LABÖCK" GivenName="Sophie" NOC="" Gender="Female" />
|
||||
<Person PersonID="29c82abe-b35a-40d9-85e9-74b383f57081" IFPersonID="" FamilyName="BICKEL" GivenName="Tobias" NOC="" Gender="Male" />
|
||||
<Person PersonID="a670c4aa-c08d-40bf-9f3f-404d183234ea" IFPersonID="" FamilyName="BLEIBAUM" GivenName="Anton" NOC="" Gender="Male" />
|
||||
<Person PersonID="1e373452-50af-4fee-afe4-0a70c19e496a" IFPersonID="" FamilyName="JACOBS" GivenName="Tobias" NOC="" Gender="Male" />
|
||||
<Person PersonID="9eb7dd58-b239-4dfe-aa6d-d7836ef06e44" IFPersonID="" FamilyName="PLÖTTNER" GivenName="Robert" NOC="" Gender="Male" />
|
||||
<Person PersonID="ccdbc583-1530-44be-b216-aff0316b4423" IFPersonID="" FamilyName="MÜHLICH" GivenName="Paula" NOC="" Gender="Female" />
|
||||
<Person PersonID="d78a04c4-386c-4518-9090-20106b9768ff" IFPersonID="" FamilyName="BOLDT" GivenName="Johanna" NOC="" Gender="Female" />
|
||||
<Person PersonID="7e6262a0-e4e8-4366-8f2f-040e37860d94" IFPersonID="" FamilyName="SCHNEIDER" GivenName="Sven" NOC="" Gender="Male" />
|
||||
<Person PersonID="ab9f341e-e70b-488e-80de-f6b325587f4b" IFPersonID="" FamilyName="VOIGT" GivenName="Tom" NOC="" Gender="Male" />
|
||||
<Person PersonID="44b7f90b-2c5e-4598-b307-248f698fd9f1" IFPersonID="" FamilyName="MATHWIG" GivenName="Julian" NOC="" Gender="Male" />
|
||||
<Person PersonID="120bf979-34f5-45c3-8eb2-95e941f9562b" IFPersonID="" FamilyName="FIEDLER" GivenName="Niklas" NOC="" Gender="Male" />
|
||||
<Person PersonID="954ff860-e5fc-4747-84ab-b95adb91822c" IFPersonID="" FamilyName="PASSANNANTE" GivenName="Franca" NOC="" Gender="Female" />
|
||||
<Person PersonID="3871daeb-12f7-456f-8f08-ae803385f39d" IFPersonID="" FamilyName="LEHMANN" GivenName="Julia" NOC="" Gender="Female" />
|
||||
<Person PersonID="7b9e66de-d820-4023-a4a5-853b9f89eb37" IFPersonID="" FamilyName="WEIGT" GivenName="Nele" NOC="" Gender="Female" />
|
||||
<Person PersonID="481a353b-c3d2-407e-84c1-183a0572b399" IFPersonID="" FamilyName="MAAß" GivenName="Charlotte" NOC="" Gender="Female" />
|
||||
<Person PersonID="088ac9b6-6d45-407e-9774-5ca453c8097b" IFPersonID="" FamilyName="HAUSMANN" GivenName="Oda" NOC="" Gender="Male" />
|
||||
<Person PersonID="01ab3d71-6d0f-481f-aa43-eb009dae7458" IFPersonID="" FamilyName="SCHLEITHOFF" GivenName="Raphael" NOC="" Gender="Male" />
|
||||
<Person PersonID="d2d28926-e4a0-4639-a584-d2652eb38b77" IFPersonID="" FamilyName="PRZYBYL" GivenName="Insa" NOC="" Gender="Female" />
|
||||
<Person PersonID="e1493195-a79e-459d-ac1e-01e9c19c9beb" IFPersonID="" FamilyName="LEDDERBOGE" GivenName="Helene" NOC="" Gender="Female" />
|
||||
<Person PersonID="a17cac90-6e7d-4c39-908e-c729a794cd07" IFPersonID="" FamilyName="WOLFF" GivenName="Charlotte" NOC="" Gender="Female" />
|
||||
<Person PersonID="70eadb36-cae7-4725-a397-09557f64472b" IFPersonID="" FamilyName="STEINICKE" GivenName="Greta" NOC="" Gender="Female" />
|
||||
<Person PersonID="840414aa-104f-4724-9810-8867611ed084" IFPersonID="" FamilyName="ENGELMANN" GivenName="Alisa" NOC="" Gender="Female" />
|
||||
<Person PersonID="fcfdca86-4206-4bcf-82ee-dac7a6b31459" IFPersonID="" FamilyName="ENGELMANN" GivenName="Niklas" NOC="" Gender="Male" />
|
||||
<Person PersonID="43deabed-ba20-46f1-8ee9-47184bd8e116" IFPersonID="" FamilyName="EICHHORST" GivenName="Leonie" NOC="" Gender="Female" />
|
||||
<Person PersonID="522bf39d-0895-4a2c-b417-f0f2fd63e0ef" IFPersonID="" FamilyName="HOESCH" GivenName="Tatjana" NOC="" Gender="Female" />
|
||||
<Person PersonID="7d531088-47ef-463c-9f67-e28254957992" IFPersonID="" FamilyName="HOERR" GivenName="Christopher" NOC="" Gender="Male" />
|
||||
<Person PersonID="a0c88ef5-20ac-41ce-bda3-1752a251bab1" IFPersonID="" FamilyName="HAMANN" GivenName="Daniel" NOC="" Gender="Male" />
|
||||
<Person PersonID="c4855233-eb13-40d5-9c3e-4eb6ee70f8c5" IFPersonID="" FamilyName="GERMAR" GivenName="Henrike" NOC="" Gender="Female" />
|
||||
<Person PersonID="a1c01de9-e74b-4755-be5c-cbe05de8ba9d" IFPersonID="" FamilyName="PROFITLICH" GivenName="Hannah" NOC="" Gender="Female" />
|
||||
<Person PersonID="e5a72cb2-8339-43bb-b140-0a2966e995e9" IFPersonID="" FamilyName="AHLERS" GivenName="Emma" NOC="" Gender="Female" />
|
||||
<Person PersonID="c697604f-7c51-44c5-af85-e6f5c7d5c158" IFPersonID="" FamilyName="WILLE" GivenName="Hanna" NOC="" Gender="Female" />
|
||||
<Person PersonID="23186eb0-b7b0-4f57-ac99-1c894b23795d" IFPersonID="" FamilyName="PIES" GivenName="Marcus" NOC="" Gender="Male" />
|
||||
<Person PersonID="8512eeb9-b494-46c9-a57e-db20aa55df13" IFPersonID="" FamilyName="LUKOSCH" GivenName="Matthias" NOC="" Gender="Male" />
|
||||
<Person PersonID="5b326189-8982-4f97-8f57-b7afae718451" IFPersonID="" FamilyName="ULBRICH" GivenName="Beatrice" NOC="" Gender="Female" />
|
||||
<Person PersonID="8dd2545b-8988-4be9-8277-1a78010957be" IFPersonID="" FamilyName="RENNER" GivenName="Anissa" NOC="" Gender="Female" />
|
||||
<Person PersonID="850f5280-5b51-4aa2-bbec-465bcb9ca21c" IFPersonID="" FamilyName="SOBOTT" GivenName="Julian" NOC="" Gender="Male" />
|
||||
<Person PersonID="dba110c6-fed3-4925-847a-44045a8a4f7e" IFPersonID="" FamilyName="HILDEBRAND" GivenName="Marc" NOC="" Gender="Male" />
|
||||
<Person PersonID="24570773-0a16-48a3-8a52-32547cc21c2d" IFPersonID="" FamilyName="CHRISTOPHERSEN" GivenName="Malte" NOC="" Gender="Male" />
|
||||
<Person PersonID="4dcb51be-8e6f-4e42-ae9c-dc0edad6683e" IFPersonID="" FamilyName="RAUSCH" GivenName="Niklas" NOC="" Gender="Male" />
|
||||
<Person PersonID="7283a89d-afe9-4f35-becd-94fe15332b61" IFPersonID="" FamilyName="KLASEN" GivenName="Linus" NOC="" Gender="Male" />
|
||||
<Person PersonID="95a73cff-fa5c-4dae-a96f-77743ca4962a" IFPersonID="" FamilyName="GÖTTLICH" GivenName="Daniel" NOC="" Gender="Male" />
|
||||
<Person PersonID="16ae2680-1509-4fdf-9b78-757fe0387d6d" IFPersonID="" FamilyName="CORSI" GivenName="Nicolas" NOC="" Gender="Male" />
|
||||
<Person PersonID="4dfe527f-b344-4acf-ac55-797d3fa5e4ae" IFPersonID="" FamilyName="JANSEN" GivenName="Nico" NOC="" Gender="Male" />
|
||||
<Person PersonID="4219bcb2-5786-4c55-acba-55bc40a32b7f" IFPersonID="" FamilyName="BATZING" GivenName="Bente" NOC="" Gender="Female" />
|
||||
<Person PersonID="44577a33-2638-4157-982a-ffa381208f1a" IFPersonID="" FamilyName="WOLFF" GivenName="Anton" NOC="" Gender="Male" />
|
||||
<Person PersonID="231f0d82-3b14-46ae-a860-8bc73661ba68" IFPersonID="" FamilyName="LOHMER" GivenName="Johannes" NOC="" Gender="Male" />
|
||||
<Person PersonID="4028656a-08bd-4fae-8167-0f480a54cd5a" IFPersonID="" FamilyName="TARABOCHIA" GivenName="Marco" NOC="" Gender="Male" />
|
||||
<Person PersonID="a32d9b33-4339-4e96-ba3f-b46087d68750" IFPersonID="" FamilyName="DAMERAU" GivenName="Alexandra" NOC="" Gender="Female" />
|
||||
<Person PersonID="4ba9cdb8-400c-47f6-8e40-eba0fcc3d6d4" IFPersonID="" FamilyName="SCHWIRKMANN" GivenName="Clara" NOC="" Gender="Female" />
|
||||
<Person PersonID="da1cf1be-5e98-46df-bba6-16afa9338e34" IFPersonID="" FamilyName="FRITZ" GivenName="Charlotta" NOC="" Gender="Female" />
|
||||
<Person PersonID="eebdfb21-b77e-4feb-9b6d-c325a65d7636" IFPersonID="" FamilyName="SCHRIMPER" GivenName="Carolin" NOC="" Gender="Female" />
|
||||
<Person PersonID="d9a8dc62-ec83-4e69-9f93-5c78949b9167" IFPersonID="" FamilyName="LENKMANN" GivenName="Maike" NOC="" Gender="Female" />
|
||||
<Person PersonID="91d1aee4-bc30-4774-8fbf-ab9a48b0ae8b" IFPersonID="" FamilyName="RIXNER" GivenName="Elena" NOC="" Gender="Female" />
|
||||
<Person PersonID="f9969008-f1e1-44dc-9d98-f84f54fe6f5c" IFPersonID="" FamilyName="ROLLE" GivenName="Dennis" NOC="" Gender="Male" />
|
||||
<Person PersonID="337f3d48-874e-4249-a04b-6d3bc161db1d" IFPersonID="" FamilyName="GÜNTHER" GivenName="Steven" NOC="" Gender="Male" />
|
||||
<Person PersonID="7ebfee8b-55da-4886-9a03-5ad3ad533a53" IFPersonID="" FamilyName="von WALDOW" GivenName="Sophie" NOC="" Gender="Female" />
|
||||
<Person PersonID="7b43909c-da44-4105-a88a-788eb2c3dfaa" IFPersonID="" FamilyName="SCHAAFF" GivenName="Carolin" NOC="" Gender="Female" />
|
||||
<Person PersonID="4a82abee-f464-4cd8-a0a9-ae5c77c27685" IFPersonID="" FamilyName="LEITL" GivenName="Henrike" NOC="" Gender="Female" />
|
||||
<Person PersonID="c78bd123-bf7b-4a6f-9cf7-bcbac0e9893d" IFPersonID="" FamilyName="HOFMANN" GivenName="Inga-Marie" NOC="" Gender="Female" />
|
||||
<Person PersonID="8ce9957b-f9f5-4de2-9473-f508d8225347" IFPersonID="" FamilyName="MELCHER" GivenName="Gustavo" NOC="" Gender="Male" />
|
||||
<Person PersonID="63fbcdb7-8db2-4595-a88f-f0adc0eae128" IFPersonID="" FamilyName="HUBER" GivenName="Vitus" NOC="" Gender="Male" />
|
||||
<Person PersonID="2d162999-1ffc-4297-990e-b76674dbdf62" IFPersonID="" FamilyName="WINKEL" GivenName="Job" NOC="" Gender="Male" />
|
||||
<Person PersonID="716d25e6-1868-45f2-8a90-86626c1e6261" IFPersonID="" FamilyName="TROSIEN" GivenName="J. Mika" NOC="" Gender="Female" />
|
||||
<Person PersonID="0b241894-5e4a-4749-a24d-aac80e93215c" IFPersonID="" FamilyName="ROYLA" GivenName="Jonas" NOC="" Gender="Male" />
|
||||
<Person PersonID="c09591e1-d0f3-4ec0-85b6-e9d720eb82d3" IFPersonID="" FamilyName="ROYLA" GivenName="Philipp" NOC="" Gender="Male" />
|
||||
<Person PersonID="44911916-7803-4bd8-8257-ad1e4435f384" IFPersonID="" FamilyName="ROLLE" GivenName="Dennis" NOC="" Gender="Male" />
|
||||
<Person PersonID="d98f5132-ac42-45f2-ac6b-153f44801c78" IFPersonID="" FamilyName="GÜNTHER" GivenName="Steven" NOC="" Gender="Male" />
|
||||
<Person PersonID="4e2492a7-69b8-4966-8b1e-31be62899b6f" IFPersonID="" FamilyName="WEIGELT" GivenName="Mattes" NOC="" Gender="Male" />
|
||||
<Person PersonID="800c4191-2233-404b-9c4c-dd29b2d81b6a" IFPersonID="" FamilyName="STEUBER" GivenName="Tim" NOC="" Gender="Male" />
|
||||
<Person PersonID="6a1b56ee-bc33-4a5d-ad70-67d38977b2a1" IFPersonID="" FamilyName="LEIDHOLDT" GivenName="Luca" NOC="" Gender="Male" />
|
||||
<Person PersonID="ff798273-ac5f-4551-8efb-9146081398d4" IFPersonID="" FamilyName="MÖLLER" GivenName="Ole" NOC="" Gender="Male" />
|
||||
<Person PersonID="683d0ac8-fdbe-437f-86f6-225bde8c5d2a" IFPersonID="" FamilyName="STROHM" GivenName="Piet" NOC="" Gender="Male" />
|
||||
<Person PersonID="d10a2275-dcaa-478d-b3fb-efc344dea38a" IFPersonID="" FamilyName="STUDT" GivenName="Bjarne" NOC="" Gender="Female" />
|
||||
<Person PersonID="8ece290d-c0cd-418d-96c8-a159ba09e177" IFPersonID="" FamilyName="NACKE" GivenName="Jannis" NOC="" Gender="Male" />
|
||||
<Person PersonID="153d363d-6c08-4ce3-804e-e0cd6e8be4b1" IFPersonID="" FamilyName="BRÜCKNER" GivenName="Hannes" NOC="" Gender="Male" />
|
||||
<Person PersonID="1a5604f1-a863-4a33-9c9a-de5253a6c783" IFPersonID="" FamilyName="LANDAU" GivenName="David" NOC="" Gender="Male" />
|
||||
<Person PersonID="71f09957-41a8-4945-896f-5030d383ecb6" IFPersonID="" FamilyName="THOMAS" GivenName="Julius" NOC="" Gender="Male" />
|
||||
<Person PersonID="f7980da1-4569-4fa6-a2d7-31771682a750" IFPersonID="" FamilyName="SCHELL" GivenName="Caroline" NOC="" Gender="Female" />
|
||||
<Person PersonID="5a479457-9f4f-43ed-834c-c78d29843acb" IFPersonID="" FamilyName="FALTIN" GivenName="Katja" NOC="" Gender="Female" />
|
||||
<Person PersonID="b2907afa-dadf-4e73-b474-7b8c428e1a91" IFPersonID="" FamilyName="HEILINGBRUNNER" GivenName="Christina" NOC="" Gender="Female" />
|
||||
<Person PersonID="aed68885-740e-4117-80dc-9d828ac5c437" IFPersonID="" FamilyName="HEILINGBRUNNER" GivenName="Maximilian" NOC="" Gender="Male" />
|
||||
<Person PersonID="45fe798e-4e11-42ea-83d5-bee287b8d971" IFPersonID="" FamilyName="VOGES" GivenName="Vivienne" NOC="" Gender="Female" />
|
||||
<Person PersonID="91bb3029-8354-4f0f-86ce-2fe56b849c16" IFPersonID="" FamilyName="ROOS" GivenName="Maike" NOC="" Gender="Female" />
|
||||
<Person PersonID="a215a528-f68e-4548-8849-db33b6fda141" IFPersonID="" FamilyName="GOEPFERT" GivenName="Leon" NOC="" Gender="Male" />
|
||||
<Person PersonID="f8b7edbc-c892-4ea6-a769-5a5c535267fc" IFPersonID="" FamilyName="FELDHUSEN" GivenName="Paul" NOC="" Gender="Male" />
|
||||
<Person PersonID="79bdc3b7-30ff-4f3d-9820-9b464959aa79" IFPersonID="" FamilyName="BRAUN" GivenName="Silja" NOC="" Gender="Female" />
|
||||
<Person PersonID="91f4c4cc-8ae4-436a-a4e6-36530d4de8fc" IFPersonID="" FamilyName="LUDOWIG" GivenName="Lea" NOC="" Gender="Female" />
|
||||
<Person PersonID="9346bcc3-b4ea-4b0b-9603-4cf5f181a878" IFPersonID="" FamilyName="GRUSCHKA" GivenName="Arne" NOC="" Gender="Male" />
|
||||
<Person PersonID="e8c92676-e247-45df-af5b-e1ab03220a4e" IFPersonID="" FamilyName="HELLMANN" GivenName="Victor" NOC="" Gender="Male" />
|
||||
<Boat BoatID="cd6b32e6-083e-43e9-b3e9-01ce345e24ad" BoatName="" SailNumber="GER 53471" />
|
||||
<Boat BoatID="cca150d9-fa20-4198-bde3-03328cbbfd74" BoatName="" SailNumber="GER 55659" />
|
||||
<Boat BoatID="436d998b-1014-4134-b5fa-0846a42a9b7d" BoatName="" SailNumber="GER 55547" />
|
||||
<Boat BoatID="247c800a-34be-4214-8b2a-09382747166e" BoatName="" SailNumber="GER 55655" />
|
||||
<Boat BoatID="2c96d7b2-530b-440c-a5b2-0d7d74ef9736" BoatName="" SailNumber="GER 54489" />
|
||||
<Boat BoatID="68fd4c8d-cdd8-43c6-ac0a-0d9867aa1258" BoatName="" SailNumber="GER 51594" />
|
||||
<Boat BoatID="2ad51eb4-565e-49dd-9500-127e2c464140" BoatName="" SailNumber="GER 55378" />
|
||||
<Boat BoatID="c76d99e8-1c87-4031-a540-134d7184938e" BoatName="" SailNumber="GER 52894" />
|
||||
<Boat BoatID="182c1447-a8fc-468b-bbb8-150ce93fe7aa" BoatName="" SailNumber="GER 55362" />
|
||||
<Boat BoatID="913e4b8b-3969-48d5-997e-173866d9cf12" BoatName="" SailNumber="GER 55780" />
|
||||
<Boat BoatID="2ab4c435-2903-4d92-aebe-194855253bbe" BoatName="" SailNumber="GER 53650" />
|
||||
<Boat BoatID="d4c4f67d-146e-4824-b7cc-1a779fb52da3" BoatName="" SailNumber="GER 55027" />
|
||||
<Boat BoatID="c5bcab3d-7bda-4920-b08a-1a8526513977" BoatName="" SailNumber="GER 54788" />
|
||||
<Boat BoatID="2868d4c2-3277-4c53-bcaf-1d4eeb63f6dc" BoatName="" SailNumber="GER 54980" />
|
||||
<Boat BoatID="5990b1c2-49a7-48da-be8c-201377b8258b" BoatName="" SailNumber="GER 54214" />
|
||||
<Boat BoatID="9ac92fcb-c92e-46fd-87c5-233d3ee1e999" BoatName="" SailNumber="GER 55810" />
|
||||
<Boat BoatID="69e30610-daa1-44ef-98ff-25b00184dd98" BoatName="" SailNumber="GER 54435" />
|
||||
<Boat BoatID="387bbf98-0750-4883-8d22-27cbedb817d1" BoatName="" SailNumber="GER 55382" />
|
||||
<Boat BoatID="35861ced-bd84-42f6-8fb9-2910c9d6760d" BoatName="" SailNumber="GER 55786" />
|
||||
<Boat BoatID="043e2b5b-75aa-4419-a211-2c50607b56dd" BoatName="" SailNumber="GER 54611" />
|
||||
<Boat BoatID="d044cdd5-357d-4e5b-b964-2ca915a5e8a6" BoatName="" SailNumber="GER 54576" />
|
||||
<Boat BoatID="74690a41-e33a-4cf9-a4cb-301f60c97069" BoatName="" SailNumber="GER 53970" />
|
||||
<Boat BoatID="faa2f7ba-ae47-4055-bef2-34f29a110390" BoatName="" SailNumber="GER 55140" />
|
||||
<Boat BoatID="118f3318-f7b2-4b1b-b21c-39b194997575" BoatName="" SailNumber="GER 54195" />
|
||||
<Boat BoatID="0042539a-787a-46d8-9c98-3a7e2b443534" BoatName="" SailNumber="GER 54497" />
|
||||
<Boat BoatID="1ce8f554-5b82-4d5f-8a3f-3bbc21667ecd" BoatName="" SailNumber="GER 54966" />
|
||||
<Boat BoatID="2992c30c-a6af-4df2-98e9-3decede41491" BoatName="" SailNumber="GER 55115" />
|
||||
<Boat BoatID="a1677e96-ca01-4fa3-ae65-3e0dfed67d01" BoatName="" SailNumber="GER 55546" />
|
||||
<Boat BoatID="f2628232-d174-4339-abdd-3f53c6cfbd23" BoatName="" SailNumber="GER 55365" />
|
||||
<Boat BoatID="eb7e2b1c-dda2-4287-8d78-3fa91a4f4922" BoatName="" SailNumber="GER 54158" />
|
||||
<Boat BoatID="eafcd70a-4f8f-4e9d-88ad-410ccb5e0921" BoatName="" SailNumber="GER 55230" />
|
||||
<Boat BoatID="b9fb95b0-9b8d-4bda-ac5b-41680e4bc400" BoatName="" SailNumber="GER 54829" />
|
||||
<Boat BoatID="90180931-071e-4146-9049-4342a1655c5c" BoatName="" SailNumber="GER 55233" />
|
||||
<Boat BoatID="3834c352-0f9b-4d65-92b3-44f362a2fbd2" BoatName="" SailNumber="GER 55022" />
|
||||
<Boat BoatID="ad78a2f2-e194-41c8-a05f-464775e7ee90" BoatName="" SailNumber="GER 55541" />
|
||||
<Boat BoatID="90b7bbf4-43f5-4e0f-a560-466364dc38cd" BoatName="" SailNumber="GER 50519" />
|
||||
<Boat BoatID="560bb947-ee4d-4fee-ba48-4c30eb952c26" BoatName="" SailNumber="GER 55624" />
|
||||
<Boat BoatID="c273cbff-777f-4899-b3e3-50b22dfc9273" BoatName="" SailNumber="GER 54885" />
|
||||
<Boat BoatID="f0d26b19-c46f-45b4-bfd4-52f9d4332190" BoatName="" SailNumber="GER 54221" />
|
||||
<Boat BoatID="80a25bc3-fac5-4ee6-8ea7-53fc41195622" BoatName="" SailNumber="GER 55781" />
|
||||
<Boat BoatID="d4090880-de5e-4523-b6a9-5591af7c44a2" BoatName="" SailNumber="GER 54965" />
|
||||
<Boat BoatID="fb2ab1de-b247-4991-9e33-565d2491756a" BoatName="" SailNumber="GER 51736" />
|
||||
<Boat BoatID="b2853195-8cd6-4809-ae50-5b32aa367b39" BoatName="" SailNumber="GER 55542" />
|
||||
<Boat BoatID="1a6206be-c361-473e-9153-5c192e20a58e" BoatName="" SailNumber="GER 54971" />
|
||||
<Boat BoatID="eb885b41-b283-43f3-9613-5caf2202d2fd" BoatName="" SailNumber="GER 55933" />
|
||||
<Boat BoatID="6d1e637c-1a77-4cd3-95ec-5da1e8bba65c" BoatName="" SailNumber="GER 55356" />
|
||||
<Boat BoatID="69901990-703b-4372-bd4c-61a8715456df" BoatName="" SailNumber="GER 55330" />
|
||||
<Boat BoatID="f96ae88f-4cf3-4357-a00c-689d072a9871" BoatName="" SailNumber="GER 52774" />
|
||||
<Boat BoatID="6f814f6e-35ff-4a3a-aef8-698192319f3d" BoatName="" SailNumber="GER 54311" />
|
||||
<Boat BoatID="05c02c25-123b-416a-85da-6c7765d17cd6" BoatName="" SailNumber="GER 54425" />
|
||||
<Boat BoatID="9c9564b0-2b96-4b58-8cf0-6e7b0fe6d10f" BoatName="" SailNumber="GER 51965" />
|
||||
<Boat BoatID="e09ff060-3a17-4239-916a-746d16203c53" BoatName="" SailNumber="GER 55017" />
|
||||
<Boat BoatID="6d06b1aa-93bb-40cc-ae50-75481d0ba1ed" BoatName="" SailNumber="GER 55799" />
|
||||
<Boat BoatID="34b98046-d8ec-482f-8200-7c56c8105983" BoatName="" SailNumber="GER 54746" />
|
||||
<Boat BoatID="2dfd4897-c70e-4601-a20c-7d3b40d5ae03" BoatName="" SailNumber="GER 51879" />
|
||||
<Boat BoatID="7688826a-62be-4d51-81bc-81fe6fec962a" BoatName="" SailNumber="GER 55785" />
|
||||
<Boat BoatID="959cf112-6941-4910-a441-8bcde7ac82b5" BoatName="" SailNumber="GER 54488" />
|
||||
<Boat BoatID="7f1e1631-25f8-461d-ae71-8c4a0a0ba8ff" BoatName="" SailNumber="GER 54501" />
|
||||
<Boat BoatID="16fb6511-3bf8-4eca-977c-8d75a39bf728" BoatName="" SailNumber="GER 53082" />
|
||||
<Boat BoatID="6726f0a9-e4cd-4740-993c-8e4a26f9911f" BoatName="" SailNumber="GER 55783" />
|
||||
<Boat BoatID="25177dce-27c1-4840-9ced-8fcb614f679e" BoatName="" SailNumber="GER 54883" />
|
||||
<Boat BoatID="f11899d1-805b-4af4-a4a0-9055b63c701a" BoatName="" SailNumber="GER 53595" />
|
||||
<Boat BoatID="9015f49b-44d1-453b-a2a7-92f1cd4f9956" BoatName="" SailNumber="GER 54186" />
|
||||
<Boat BoatID="b5c9f123-c3a9-4e34-af94-93987304e6ab" BoatName="" SailNumber="GER 53915" />
|
||||
<Boat BoatID="fe961490-d86c-4ef1-b3d7-9783f52a6ca2" BoatName="" SailNumber="GER 52048" />
|
||||
<Boat BoatID="c42e5a22-7b4f-4b6e-a7fe-97b030c6a7ef" BoatName="" SailNumber="GER 54500" />
|
||||
<Boat BoatID="4bd45adc-d120-4630-9bdf-9bb7014fb128" BoatName="" SailNumber="GER 55660" />
|
||||
<Boat BoatID="6abaaea3-6e3e-478c-b764-9d96552e8814" BoatName="" SailNumber="GER 54977" />
|
||||
<Boat BoatID="9dec7a3b-c5a1-4486-92bc-a1803a166744" BoatName="" SailNumber="GER 55364" />
|
||||
<Boat BoatID="979f7643-5876-4db0-8702-a1fe41859276" BoatName="" SailNumber="GER 55843" />
|
||||
<Boat BoatID="e0da25a6-ec5e-40d3-bcb6-a4a82549b002" BoatName="" SailNumber="GER 54691" />
|
||||
<Boat BoatID="7e6b50df-22d2-4d9b-b63e-a6029b3a7dbe" BoatName="" SailNumber="GER 55234" />
|
||||
<Boat BoatID="e6e11fa4-f324-4a54-8189-a83febb7b011" BoatName="" SailNumber="GER 54343" />
|
||||
<Boat BoatID="e5759181-a9c6-4eef-87ba-ade56239dbfa" BoatName="" SailNumber="GER 54436" />
|
||||
<Boat BoatID="0b7f7cf3-d7e1-4a09-b3db-af600fb76ecb" BoatName="" SailNumber="GER 55498" />
|
||||
<Boat BoatID="1692db31-de8e-4170-8b71-b38cf723a150" BoatName="" SailNumber="GER 55163" />
|
||||
<Boat BoatID="2b1657ae-81fd-49ad-a6b5-b6b2e446d31e" BoatName="" SailNumber="GER 55155" />
|
||||
<Boat BoatID="a20f7bdf-33bc-4b3c-96b4-b79b20d213a3" BoatName="" SailNumber="GER 52490" />
|
||||
<Boat BoatID="6407745e-63fc-413e-9dfd-b7febdeec0c0" BoatName="" SailNumber="GER 54010" />
|
||||
<Boat BoatID="ef4672f5-4f0d-41fe-aa3d-bd89513fa42b" BoatName="" SailNumber="GER 55016" />
|
||||
<Boat BoatID="d1ce61e2-650a-49f4-b946-c727c153939f" BoatName="" SailNumber="GER 55028" />
|
||||
<Boat BoatID="7998cd71-41f5-4062-91bc-cb1803978548" BoatName="" SailNumber="GER 54159" />
|
||||
<Boat BoatID="d8b7e4f6-ecd1-4e7e-8428-d4ba5dd2c130" BoatName="" SailNumber="GER 55503" />
|
||||
<Boat BoatID="4c2287ca-80b5-4d77-be2f-d73f0a559ad5" BoatName="" SailNumber="GER 54937" />
|
||||
<Boat BoatID="3f9bdabe-a088-4e06-af9c-d9db9d31dd06" BoatName="" SailNumber="GER 54859" />
|
||||
<Boat BoatID="5fa4b362-5294-4ac7-a9f9-dac7e17431ba" BoatName="" SailNumber="GER 54639" />
|
||||
<Boat BoatID="cb9673c2-2842-4a34-b615-dbb881717101" BoatName="" SailNumber="GER 52628" />
|
||||
<Boat BoatID="7cda1e6b-2e11-4d13-9009-dc11b691a800" BoatName="" SailNumber="GER 55377" />
|
||||
<Boat BoatID="516341c7-f44b-4d23-ab34-dda53584c50b" BoatName="" SailNumber="GER 55903" />
|
||||
<Boat BoatID="b4469821-ea1d-4252-84f1-e0bb03a2fe50" BoatName="" SailNumber="GER 55357" />
|
||||
<Boat BoatID="2fa7c10d-46aa-410f-9c16-e40c417659e2" BoatName="" SailNumber="GER 55331" />
|
||||
<Boat BoatID="a6b5ba21-3241-47c5-b302-e699d79a7aec" BoatName="" SailNumber="GER 55251" />
|
||||
<Boat BoatID="5a6bcb54-c91b-4de8-81db-e9b1bdf248fd" BoatName="" SailNumber="GER 54426" />
|
||||
<Boat BoatID="d7bd4a79-3341-40aa-8d13-eac2d7d0fb2b" BoatName="" SailNumber="GER 54430" />
|
||||
<Boat BoatID="426aeb29-bc5c-462c-b9e8-ece7fef8922b" BoatName="" SailNumber="GER 54970" />
|
||||
<Boat BoatID="c148a293-7ac5-4305-a855-f4228ff24756" BoatName="" SailNumber="GER 55502" />
|
||||
<Boat BoatID="f5cc2b9b-a1c2-491c-b517-f4553f1cf950" BoatName="" SailNumber="GER 55363" />
|
||||
<Boat BoatID="c6b471bf-c529-4046-8ded-f6a6ff8aa922" BoatName="" SailNumber="GER 55222" />
|
||||
<Boat BoatID="de3db693-3ff6-4f0a-b1cb-f6e9dc687171" BoatName="" SailNumber="GER 55264" />
|
||||
<Boat BoatID="1dfc46ec-e5ad-4f2e-80a3-fb6e58ccb809" BoatName="" SailNumber="GER 55030" />
|
||||
<Team Gender="Men" TeamID="cd6b32e6-083e-43e9-b3e9-01ce345e24ad" TeamName="Benedikt WALKEMBACH" BoatID="cd6b32e6-083e-43e9-b3e9-01ce345e24ad">
|
||||
<Crew PersonID="4dd872be-c74f-4ec5-907d-1ef72d355a02" Position="C" />
|
||||
<Crew PersonID="917dd02f-f285-47e7-aaae-74c15d464b76" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="cca150d9-fa20-4198-bde3-03328cbbfd74" TeamName="Valentina TAST" BoatID="cca150d9-fa20-4198-bde3-03328cbbfd74">
|
||||
<Crew PersonID="0ca62ba5-bc73-444d-85bb-3dd9de60974e" Position="C" />
|
||||
<Crew PersonID="8530bea0-24b3-4777-92fc-0203b1768404" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="436d998b-1014-4134-b5fa-0846a42a9b7d" TeamName="Konstantin STEIDLE" BoatID="436d998b-1014-4134-b5fa-0846a42a9b7d">
|
||||
<Crew PersonID="fbd25e61-eae8-4eb4-8a33-963447feee5c" Position="C" />
|
||||
<Crew PersonID="130158cb-8024-41a4-ad61-880dd7ae1bd6" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="247c800a-34be-4214-8b2a-09382747166e" TeamName="Janek STRUCHHOLZ" BoatID="247c800a-34be-4214-8b2a-09382747166e">
|
||||
<Crew PersonID="05074078-d6fb-4ecc-90b9-14651bc6b3c5" Position="C" />
|
||||
<Crew PersonID="1f2411fc-7a3e-46c3-b8cb-3b86d9c70272" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="2c96d7b2-530b-440c-a5b2-0d7d74ef9736" TeamName="Lynn THORNS" BoatID="2c96d7b2-530b-440c-a5b2-0d7d74ef9736">
|
||||
<Crew PersonID="6233565e-45f7-443f-9d76-f5f700120b55" Position="C" />
|
||||
<Crew PersonID="2d7fd320-2502-4289-8157-6f0506816452" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="68fd4c8d-cdd8-43c6-ac0a-0d9867aa1258" TeamName="Johanna SCHENK" BoatID="68fd4c8d-cdd8-43c6-ac0a-0d9867aa1258">
|
||||
<Crew PersonID="88fddbd9-a504-4eee-bf0d-e5c1fb2062aa" Position="C" />
|
||||
<Crew PersonID="e06bd015-7ede-477a-be0a-7a647950a64f" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="2ad51eb4-565e-49dd-9500-127e2c464140" TeamName="Jolanda Lene MÜLLER" BoatID="2ad51eb4-565e-49dd-9500-127e2c464140">
|
||||
<Crew PersonID="3e747152-c43a-4daf-8f2e-3292ac0a941a" Position="C" />
|
||||
<Crew PersonID="7ddb8f8f-ae44-4d7e-b3a5-a181479e38f5" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="c76d99e8-1c87-4031-a540-134d7184938e" TeamName="Henning KRÖPLIN" BoatID="c76d99e8-1c87-4031-a540-134d7184938e">
|
||||
<Crew PersonID="0483b94c-4120-43ce-b561-e7d6358450bf" Position="C" />
|
||||
<Crew PersonID="a9c04df6-f3c7-49eb-b744-3d78659365ba" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="182c1447-a8fc-468b-bbb8-150ce93fe7aa" TeamName="Finn KENTER" BoatID="182c1447-a8fc-468b-bbb8-150ce93fe7aa">
|
||||
<Crew PersonID="029c5b9c-333b-4da3-ae78-f0f72923360c" Position="C" />
|
||||
<Crew PersonID="e0e4c917-2d16-436d-b718-ed65a1579a81" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="913e4b8b-3969-48d5-997e-173866d9cf12" TeamName="Analea SCHÄFER" BoatID="913e4b8b-3969-48d5-997e-173866d9cf12">
|
||||
<Crew PersonID="d6af23bc-f4f1-404e-b948-fbd4f069cb02" Position="C" />
|
||||
<Crew PersonID="f9ddd1e8-d1a7-433f-8036-251508b4d5fe" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="2ab4c435-2903-4d92-aebe-194855253bbe" TeamName="Maximilian KRAMER" BoatID="2ab4c435-2903-4d92-aebe-194855253bbe">
|
||||
<Crew PersonID="fcab0d54-1a4d-4b23-8ac9-fc8d0b290787" Position="C" />
|
||||
<Crew PersonID="575535a5-26ea-4443-acc7-b35e2781a4f7" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="d4c4f67d-146e-4824-b7cc-1a779fb52da3" TeamName="Jessica KÖHLER" BoatID="d4c4f67d-146e-4824-b7cc-1a779fb52da3">
|
||||
<Crew PersonID="55cb2f7c-46e2-48f8-9b34-f0517361d6fb" Position="C" />
|
||||
<Crew PersonID="ab2f32ce-c4c1-4634-a265-9f320d9cb017" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="c5bcab3d-7bda-4920-b08a-1a8526513977" TeamName="Lucas SCHLÜTER" BoatID="c5bcab3d-7bda-4920-b08a-1a8526513977">
|
||||
<Crew PersonID="418b9db9-6eac-4c77-9611-5d86ccd495b1" Position="C" />
|
||||
<Crew PersonID="d6a8d063-354a-401d-a966-342de8118fe7" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="2868d4c2-3277-4c53-bcaf-1d4eeb63f6dc" TeamName="Frederike WESTPHALEN" BoatID="2868d4c2-3277-4c53-bcaf-1d4eeb63f6dc">
|
||||
<Crew PersonID="b7f22693-a0b5-4c67-9b6b-28fb39cf7ff8" Position="C" />
|
||||
<Crew PersonID="5ae49552-1097-4f04-87df-4fdc90ba16e9" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="5990b1c2-49a7-48da-be8c-201377b8258b" TeamName="Julian HALLE" BoatID="5990b1c2-49a7-48da-be8c-201377b8258b">
|
||||
<Crew PersonID="6ac9d970-2026-40d9-9205-49a15b55a1a4" Position="C" />
|
||||
<Crew PersonID="5737cb50-9b73-4446-97a1-86317c0dae59" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="9ac92fcb-c92e-46fd-87c5-233d3ee1e999" TeamName="Jan PETERSON" BoatID="9ac92fcb-c92e-46fd-87c5-233d3ee1e999">
|
||||
<Crew PersonID="9828e904-a945-4f97-a6cb-ee1a00c705e4" Position="C" />
|
||||
<Crew PersonID="e937c6b5-6edc-462b-b4f8-c465656ffc6a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="69e30610-daa1-44ef-98ff-25b00184dd98" TeamName="Melissa KLEIß" BoatID="69e30610-daa1-44ef-98ff-25b00184dd98">
|
||||
<Crew PersonID="ec63fc3e-5a8c-4bc2-8e06-dce462d84146" Position="C" />
|
||||
<Crew PersonID="6d634781-abed-4c17-820b-2551fc8501d5" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="387bbf98-0750-4883-8d22-27cbedb817d1" TeamName="Moritz HEGER" BoatID="387bbf98-0750-4883-8d22-27cbedb817d1">
|
||||
<Crew PersonID="cfd23e5c-9dae-4b53-ba2f-439f8a6b6ddb" Position="C" />
|
||||
<Crew PersonID="ae2b47b1-83ce-4417-94af-19a5b3a2605a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="35861ced-bd84-42f6-8fb9-2910c9d6760d" TeamName="Anna KRALLMANN" BoatID="35861ced-bd84-42f6-8fb9-2910c9d6760d">
|
||||
<Crew PersonID="aa5e9c9f-1393-4ba4-ad28-84cc4bbecb63" Position="C" />
|
||||
<Crew PersonID="cb8d4c23-0d73-45fa-aac3-7978fb253987" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="043e2b5b-75aa-4419-a211-2c50607b56dd" TeamName="Tobias SIEWEKE" BoatID="043e2b5b-75aa-4419-a211-2c50607b56dd">
|
||||
<Crew PersonID="fabd5664-1339-46e5-b4ed-110f794a317d" Position="C" />
|
||||
<Crew PersonID="f3d214e9-4652-4192-9817-bbeee94efaba" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="d044cdd5-357d-4e5b-b964-2ca915a5e8a6" TeamName="Moritz VON WEIDENBACH" BoatID="d044cdd5-357d-4e5b-b964-2ca915a5e8a6">
|
||||
<Crew PersonID="5cf95655-605c-45dc-a5af-61a677f4f39a" Position="C" />
|
||||
<Crew PersonID="25604e0d-2617-41aa-b495-8f6602543ca3" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="74690a41-e33a-4cf9-a4cb-301f60c97069" TeamName="Moritz PICH" BoatID="74690a41-e33a-4cf9-a4cb-301f60c97069">
|
||||
<Crew PersonID="4ebd46ce-18a8-4635-b8cd-ac9ee82f2e78" Position="C" />
|
||||
<Crew PersonID="371b2519-0883-4a0f-8a74-96cef3dc53bd" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="faa2f7ba-ae47-4055-bef2-34f29a110390" TeamName="Marie LORENZ" BoatID="faa2f7ba-ae47-4055-bef2-34f29a110390">
|
||||
<Crew PersonID="1226cc52-a949-41a1-866f-f5a663082697" Position="C" />
|
||||
<Crew PersonID="81aad5b7-1049-4a49-9db6-603ab3c959e3" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="118f3318-f7b2-4b1b-b21c-39b194997575" TeamName="Eric FISCHER" BoatID="118f3318-f7b2-4b1b-b21c-39b194997575">
|
||||
<Crew PersonID="9bd7d06b-52aa-48dd-a35c-cedd3c96f42f" Position="C" />
|
||||
<Crew PersonID="13e84701-beb0-4f81-ab44-6b923347b5b3" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="0042539a-787a-46d8-9c98-3a7e2b443534" TeamName="Patricia POLTZE" BoatID="0042539a-787a-46d8-9c98-3a7e2b443534">
|
||||
<Crew PersonID="2d782627-107f-490d-9029-d6d86c6e3290" Position="C" />
|
||||
<Crew PersonID="0fe0f8a8-c851-49f3-a267-2f1342194191" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="1ce8f554-5b82-4d5f-8a3f-3bbc21667ecd" TeamName="Hannah HAGEN" BoatID="1ce8f554-5b82-4d5f-8a3f-3bbc21667ecd">
|
||||
<Crew PersonID="31a11cc2-0313-4390-b241-a841b00e8bb1" Position="C" />
|
||||
<Crew PersonID="d2504b6f-18c7-4723-8240-7db069c9e17f" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="2992c30c-a6af-4df2-98e9-3decede41491" TeamName="Marla BERGMANN" BoatID="2992c30c-a6af-4df2-98e9-3decede41491">
|
||||
<Crew PersonID="331da431-50b6-4e76-a58d-27c7eeecbbde" Position="C" />
|
||||
<Crew PersonID="8d06fef3-dd9a-4e04-9027-945fee96b9e8" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="a1677e96-ca01-4fa3-ae65-3e0dfed67d01" TeamName="Tom Luis SCHÖNFELDT" BoatID="a1677e96-ca01-4fa3-ae65-3e0dfed67d01">
|
||||
<Crew PersonID="e075e7a1-595d-4e86-88d8-45c3408c354a" Position="C" />
|
||||
<Crew PersonID="4773e605-5883-4327-9cb3-3eb4974fed91" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="f2628232-d174-4339-abdd-3f53c6cfbd23" TeamName="Jacob AHLERS" BoatID="f2628232-d174-4339-abdd-3f53c6cfbd23">
|
||||
<Crew PersonID="728e3188-ec5e-492f-8e33-ec483bf62565" Position="C" />
|
||||
<Crew PersonID="3e4329f8-6926-4f33-bf37-bb2db041aad9" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="eb7e2b1c-dda2-4287-8d78-3fa91a4f4922" TeamName="Anna ELLERMANN" BoatID="eb7e2b1c-dda2-4287-8d78-3fa91a4f4922">
|
||||
<Crew PersonID="6ecfc9af-2d59-4a73-ae7c-b94148697c47" Position="C" />
|
||||
<Crew PersonID="1e690a9f-5d50-4f67-b034-30c89506df6f" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="eafcd70a-4f8f-4e9d-88ad-410ccb5e0921" TeamName="Aliska BRUGMANS" BoatID="eafcd70a-4f8f-4e9d-88ad-410ccb5e0921">
|
||||
<Crew PersonID="36164b26-5999-4a8a-bbfe-e7f9a3224d1a" Position="C" />
|
||||
<Crew PersonID="f5692240-e12f-471b-a469-bcde7819ef37" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="b9fb95b0-9b8d-4bda-ac5b-41680e4bc400" TeamName="Jannika GOTTUK" BoatID="b9fb95b0-9b8d-4bda-ac5b-41680e4bc400">
|
||||
<Crew PersonID="3bd81fbe-9b3e-4c87-a7ce-eac7de2ed5ad" Position="C" />
|
||||
<Crew PersonID="b07d6130-2819-46e2-af20-e43938557ae0" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="90180931-071e-4146-9049-4342a1655c5c" TeamName="Jan BORBET" BoatID="90180931-071e-4146-9049-4342a1655c5c">
|
||||
<Crew PersonID="b5fc1ad8-72b2-4a91-9720-5a2f5ec01b2d" Position="C" />
|
||||
<Crew PersonID="908b2c60-b1db-4666-9665-58374b0106f7" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="3834c352-0f9b-4d65-92b3-44f362a2fbd2" TeamName="Leonard KOSANKE" BoatID="3834c352-0f9b-4d65-92b3-44f362a2fbd2">
|
||||
<Crew PersonID="19094afe-a67e-485f-b9b4-5640f861404a" Position="C" />
|
||||
<Crew PersonID="323cf154-d597-45c2-90fb-0c96146a4867" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="ad78a2f2-e194-41c8-a05f-464775e7ee90" TeamName="Ava MOMM" BoatID="ad78a2f2-e194-41c8-a05f-464775e7ee90">
|
||||
<Crew PersonID="ac3f0c4f-1b2c-4c3b-9df8-4278ba7eac2e" Position="C" />
|
||||
<Crew PersonID="0c39d674-6ba5-4b9d-bf33-ef2c845755c7" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="90b7bbf4-43f5-4e0f-a560-466364dc38cd" TeamName="Antonia GFRÖRER" BoatID="90b7bbf4-43f5-4e0f-a560-466364dc38cd">
|
||||
<Crew PersonID="c6cfa658-f40f-420e-ae1d-5c8fe4332646" Position="C" />
|
||||
<Crew PersonID="12f2191c-2990-4a8e-b976-a1a4a366d565" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="560bb947-ee4d-4fee-ba48-4c30eb952c26" TeamName="Sofie SCHÖNE" BoatID="560bb947-ee4d-4fee-ba48-4c30eb952c26">
|
||||
<Crew PersonID="c8681fa0-9ad2-44f1-8786-95c44eecaccb" Position="C" />
|
||||
<Crew PersonID="7c0084e7-6516-4d64-abea-3285022843e5" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="c273cbff-777f-4899-b3e3-50b22dfc9273" TeamName="Anneke OSTERMANN" BoatID="c273cbff-777f-4899-b3e3-50b22dfc9273">
|
||||
<Crew PersonID="5d606c13-4edf-43bb-b041-720de799f10c" Position="C" />
|
||||
<Crew PersonID="e3b73402-446c-4822-b4a9-a57d46edb79d" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="f0d26b19-c46f-45b4-bfd4-52f9d4332190" TeamName="Marlene SCHMOLKE" BoatID="f0d26b19-c46f-45b4-bfd4-52f9d4332190">
|
||||
<Crew PersonID="e0f2b284-f4bf-4db8-994c-0b2fd72268d2" Position="C" />
|
||||
<Crew PersonID="8f608fef-18e9-4b15-8921-ee16465b4dc4" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="80a25bc3-fac5-4ee6-8ea7-53fc41195622" TeamName="Christopher WENZKE" BoatID="80a25bc3-fac5-4ee6-8ea7-53fc41195622">
|
||||
<Crew PersonID="8fd4fdfa-2ad8-487a-9011-d371945b75ea" Position="C" />
|
||||
<Crew PersonID="3f9cd255-ac1d-4687-85e7-f9fbb55ca128" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="d4090880-de5e-4523-b6a9-5591af7c44a2" TeamName="Lucia HASSE" BoatID="d4090880-de5e-4523-b6a9-5591af7c44a2">
|
||||
<Crew PersonID="916ee320-6212-4048-9fb0-12f2084bcf2f" Position="C" />
|
||||
<Crew PersonID="b48e9cac-9062-4df7-baf4-481e6178cb7e" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="fb2ab1de-b247-4991-9e33-565d2491756a" TeamName="Xaver HUBER" BoatID="fb2ab1de-b247-4991-9e33-565d2491756a">
|
||||
<Crew PersonID="9d0a08dd-53cc-4d0e-8076-ed8609776238" Position="C" />
|
||||
<Crew PersonID="b3299431-4885-4a60-9fa5-69f4c270ea8b" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="b2853195-8cd6-4809-ae50-5b32aa367b39" TeamName="Mats KRÜGER" BoatID="b2853195-8cd6-4809-ae50-5b32aa367b39">
|
||||
<Crew PersonID="0d52b721-7d3d-4147-b436-65706abaeb33" Position="C" />
|
||||
<Crew PersonID="6e8c609c-9152-4d7c-9b29-cef2145b9752" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="1a6206be-c361-473e-9153-5c192e20a58e" TeamName="Emanuel VON CRAMON" BoatID="1a6206be-c361-473e-9153-5c192e20a58e">
|
||||
<Crew PersonID="3c51d3e7-0f02-4576-8173-df32c6abde6b" Position="C" />
|
||||
<Crew PersonID="74cb0ecf-b466-4d39-96e5-3ace3f4e0d0f" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="eb885b41-b283-43f3-9613-5caf2202d2fd" TeamName="My Hoa Marie OFFERGELD" BoatID="eb885b41-b283-43f3-9613-5caf2202d2fd">
|
||||
<Crew PersonID="a06ad28a-97ee-4a46-8385-e09466d81edf" Position="C" />
|
||||
<Crew PersonID="ce08a0b5-7224-4a06-85dc-c65cdabb188f" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="6d1e637c-1a77-4cd3-95ec-5da1e8bba65c" TeamName="Tim STILKENBÄUMER" BoatID="6d1e637c-1a77-4cd3-95ec-5da1e8bba65c">
|
||||
<Crew PersonID="1b0b5c44-600f-4e74-bcbe-a55e57a73c23" Position="C" />
|
||||
<Crew PersonID="4a0b89b3-215d-4e90-8c4c-7a562bb56879" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="69901990-703b-4372-bd4c-61a8715456df" TeamName="Lennart KUSS" BoatID="69901990-703b-4372-bd4c-61a8715456df">
|
||||
<Crew PersonID="b8502c66-9b31-4879-bce6-a5af856c1389" Position="C" />
|
||||
<Crew PersonID="52466a0d-3b51-43ba-972e-52b8a46cbc11" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="f96ae88f-4cf3-4357-a00c-689d072a9871" TeamName="Ulrika KLAMMT" BoatID="f96ae88f-4cf3-4357-a00c-689d072a9871">
|
||||
<Crew PersonID="af31781a-c280-44c4-ae51-982ea4c09d6d" Position="C" />
|
||||
<Crew PersonID="29c44d21-23ac-40be-bb94-2073df1cbd2e" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="6f814f6e-35ff-4a3a-aef8-698192319f3d" TeamName="Theresa LÖFFLER" BoatID="6f814f6e-35ff-4a3a-aef8-698192319f3d">
|
||||
<Crew PersonID="5cff16ee-e2ef-4f3b-a30f-841d04a3135c" Position="C" />
|
||||
<Crew PersonID="46e7cfd4-96c2-4375-a32e-8503ac6e9562" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="05c02c25-123b-416a-85da-6c7765d17cd6" TeamName="Arend BRUGMANS" BoatID="05c02c25-123b-416a-85da-6c7765d17cd6">
|
||||
<Crew PersonID="b148bbdf-3d4b-436f-a58a-2b3f4f789533" Position="C" />
|
||||
<Crew PersonID="8ebba8ef-f30b-42fc-8c67-c5e6826435c5" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="9c9564b0-2b96-4b58-8cf0-6e7b0fe6d10f" TeamName="Justin VENGER" BoatID="9c9564b0-2b96-4b58-8cf0-6e7b0fe6d10f">
|
||||
<Crew PersonID="c4b70273-7b6b-4b88-923f-0ce9d0b59ff9" Position="C" />
|
||||
<Crew PersonID="61076bcd-4d2b-431c-9350-1f5d2d9a2190" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="e09ff060-3a17-4239-916a-746d16203c53" TeamName="Leon TORKA" BoatID="e09ff060-3a17-4239-916a-746d16203c53">
|
||||
<Crew PersonID="730522cb-bf20-4eca-8e95-a0cb0e22c91c" Position="C" />
|
||||
<Crew PersonID="451ae650-a166-4add-8a63-94a6a135a643" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="6d06b1aa-93bb-40cc-ae50-75481d0ba1ed" TeamName="Theresa STEINLEIN" BoatID="6d06b1aa-93bb-40cc-ae50-75481d0ba1ed">
|
||||
<Crew PersonID="348ccdb8-eca3-45f6-832b-f550c393daae" Position="C" />
|
||||
<Crew PersonID="7155971e-ba1d-4649-a748-496745cf37e3" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="34b98046-d8ec-482f-8200-7c56c8105983" TeamName="Aurel TROSCHKE" BoatID="34b98046-d8ec-482f-8200-7c56c8105983">
|
||||
<Crew PersonID="8a6639d1-26ae-4244-8c72-97af5a4212c7" Position="C" />
|
||||
<Crew PersonID="4f921208-1d79-4e91-9fa1-65952b101578" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="2dfd4897-c70e-4601-a20c-7d3b40d5ae03" TeamName="Lilly NEUMANN" BoatID="2dfd4897-c70e-4601-a20c-7d3b40d5ae03">
|
||||
<Crew PersonID="055c2c89-8b9c-4cda-8a27-08a65190656b" Position="C" />
|
||||
<Crew PersonID="c0a9e92b-7243-46ad-8a72-69d6843d310a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="7688826a-62be-4d51-81bc-81fe6fec962a" TeamName="Sophie LABÖCK" BoatID="7688826a-62be-4d51-81bc-81fe6fec962a">
|
||||
<Crew PersonID="7a6925be-e9d9-486d-9cf0-1e0c506dc19f" Position="C" />
|
||||
<Crew PersonID="34bb85ce-319a-431d-baab-480db0631843" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="959cf112-6941-4910-a441-8bcde7ac82b5" TeamName="Anton BLEIBAUM" BoatID="959cf112-6941-4910-a441-8bcde7ac82b5">
|
||||
<Crew PersonID="29c82abe-b35a-40d9-85e9-74b383f57081" Position="C" />
|
||||
<Crew PersonID="a670c4aa-c08d-40bf-9f3f-404d183234ea" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="7f1e1631-25f8-461d-ae71-8c4a0a0ba8ff" TeamName="Robert PLÖTTNER" BoatID="7f1e1631-25f8-461d-ae71-8c4a0a0ba8ff">
|
||||
<Crew PersonID="1e373452-50af-4fee-afe4-0a70c19e496a" Position="C" />
|
||||
<Crew PersonID="9eb7dd58-b239-4dfe-aa6d-d7836ef06e44" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="16fb6511-3bf8-4eca-977c-8d75a39bf728" TeamName="Johanna BOLDT" BoatID="16fb6511-3bf8-4eca-977c-8d75a39bf728">
|
||||
<Crew PersonID="ccdbc583-1530-44be-b216-aff0316b4423" Position="C" />
|
||||
<Crew PersonID="d78a04c4-386c-4518-9090-20106b9768ff" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="6726f0a9-e4cd-4740-993c-8e4a26f9911f" TeamName="Tom VOIGT" BoatID="6726f0a9-e4cd-4740-993c-8e4a26f9911f">
|
||||
<Crew PersonID="7e6262a0-e4e8-4366-8f2f-040e37860d94" Position="C" />
|
||||
<Crew PersonID="ab9f341e-e70b-488e-80de-f6b325587f4b" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="25177dce-27c1-4840-9ced-8fcb614f679e" TeamName="Niklas FIEDLER" BoatID="25177dce-27c1-4840-9ced-8fcb614f679e">
|
||||
<Crew PersonID="44b7f90b-2c5e-4598-b307-248f698fd9f1" Position="C" />
|
||||
<Crew PersonID="120bf979-34f5-45c3-8eb2-95e941f9562b" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="f11899d1-805b-4af4-a4a0-9055b63c701a" TeamName="Julia LEHMANN" BoatID="f11899d1-805b-4af4-a4a0-9055b63c701a">
|
||||
<Crew PersonID="954ff860-e5fc-4747-84ab-b95adb91822c" Position="C" />
|
||||
<Crew PersonID="3871daeb-12f7-456f-8f08-ae803385f39d" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="9015f49b-44d1-453b-a2a7-92f1cd4f9956" TeamName="Charlotte MAAß" BoatID="9015f49b-44d1-453b-a2a7-92f1cd4f9956">
|
||||
<Crew PersonID="7b9e66de-d820-4023-a4a5-853b9f89eb37" Position="C" />
|
||||
<Crew PersonID="481a353b-c3d2-407e-84c1-183a0572b399" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="b5c9f123-c3a9-4e34-af94-93987304e6ab" TeamName="Raphael SCHLEITHOFF" BoatID="b5c9f123-c3a9-4e34-af94-93987304e6ab">
|
||||
<Crew PersonID="088ac9b6-6d45-407e-9774-5ca453c8097b" Position="C" />
|
||||
<Crew PersonID="01ab3d71-6d0f-481f-aa43-eb009dae7458" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="fe961490-d86c-4ef1-b3d7-9783f52a6ca2" TeamName="Helene LEDDERBOGE" BoatID="fe961490-d86c-4ef1-b3d7-9783f52a6ca2">
|
||||
<Crew PersonID="d2d28926-e4a0-4639-a584-d2652eb38b77" Position="C" />
|
||||
<Crew PersonID="e1493195-a79e-459d-ac1e-01e9c19c9beb" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="c42e5a22-7b4f-4b6e-a7fe-97b030c6a7ef" TeamName="Greta STEINICKE" BoatID="c42e5a22-7b4f-4b6e-a7fe-97b030c6a7ef">
|
||||
<Crew PersonID="a17cac90-6e7d-4c39-908e-c729a794cd07" Position="C" />
|
||||
<Crew PersonID="70eadb36-cae7-4725-a397-09557f64472b" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="4bd45adc-d120-4630-9bdf-9bb7014fb128" TeamName="Niklas ENGELMANN" BoatID="4bd45adc-d120-4630-9bdf-9bb7014fb128">
|
||||
<Crew PersonID="840414aa-104f-4724-9810-8867611ed084" Position="C" />
|
||||
<Crew PersonID="fcfdca86-4206-4bcf-82ee-dac7a6b31459" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="6abaaea3-6e3e-478c-b764-9d96552e8814" TeamName="Tatjana HOESCH" BoatID="6abaaea3-6e3e-478c-b764-9d96552e8814">
|
||||
<Crew PersonID="43deabed-ba20-46f1-8ee9-47184bd8e116" Position="C" />
|
||||
<Crew PersonID="522bf39d-0895-4a2c-b417-f0f2fd63e0ef" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="9dec7a3b-c5a1-4486-92bc-a1803a166744" TeamName="Daniel HAMANN" BoatID="9dec7a3b-c5a1-4486-92bc-a1803a166744">
|
||||
<Crew PersonID="7d531088-47ef-463c-9f67-e28254957992" Position="C" />
|
||||
<Crew PersonID="a0c88ef5-20ac-41ce-bda3-1752a251bab1" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="979f7643-5876-4db0-8702-a1fe41859276" TeamName="Hannah PROFITLICH" BoatID="979f7643-5876-4db0-8702-a1fe41859276">
|
||||
<Crew PersonID="c4855233-eb13-40d5-9c3e-4eb6ee70f8c5" Position="C" />
|
||||
<Crew PersonID="a1c01de9-e74b-4755-be5c-cbe05de8ba9d" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="e0da25a6-ec5e-40d3-bcb6-a4a82549b002" TeamName="Hanna WILLE" BoatID="e0da25a6-ec5e-40d3-bcb6-a4a82549b002">
|
||||
<Crew PersonID="e5a72cb2-8339-43bb-b140-0a2966e995e9" Position="C" />
|
||||
<Crew PersonID="c697604f-7c51-44c5-af85-e6f5c7d5c158" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="7e6b50df-22d2-4d9b-b63e-a6029b3a7dbe" TeamName="Matthias LUKOSCH" BoatID="7e6b50df-22d2-4d9b-b63e-a6029b3a7dbe">
|
||||
<Crew PersonID="23186eb0-b7b0-4f57-ac99-1c894b23795d" Position="C" />
|
||||
<Crew PersonID="8512eeb9-b494-46c9-a57e-db20aa55df13" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="e6e11fa4-f324-4a54-8189-a83febb7b011" TeamName="Anissa RENNER" BoatID="e6e11fa4-f324-4a54-8189-a83febb7b011">
|
||||
<Crew PersonID="5b326189-8982-4f97-8f57-b7afae718451" Position="C" />
|
||||
<Crew PersonID="8dd2545b-8988-4be9-8277-1a78010957be" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="e5759181-a9c6-4eef-87ba-ade56239dbfa" TeamName="Marc HILDEBRAND" BoatID="e5759181-a9c6-4eef-87ba-ade56239dbfa">
|
||||
<Crew PersonID="850f5280-5b51-4aa2-bbec-465bcb9ca21c" Position="C" />
|
||||
<Crew PersonID="dba110c6-fed3-4925-847a-44045a8a4f7e" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="0b7f7cf3-d7e1-4a09-b3db-af600fb76ecb" TeamName="Niklas RAUSCH" BoatID="0b7f7cf3-d7e1-4a09-b3db-af600fb76ecb">
|
||||
<Crew PersonID="24570773-0a16-48a3-8a52-32547cc21c2d" Position="C" />
|
||||
<Crew PersonID="4dcb51be-8e6f-4e42-ae9c-dc0edad6683e" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="1692db31-de8e-4170-8b71-b38cf723a150" TeamName="Daniel GÖTTLICH" BoatID="1692db31-de8e-4170-8b71-b38cf723a150">
|
||||
<Crew PersonID="7283a89d-afe9-4f35-becd-94fe15332b61" Position="C" />
|
||||
<Crew PersonID="95a73cff-fa5c-4dae-a96f-77743ca4962a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="2b1657ae-81fd-49ad-a6b5-b6b2e446d31e" TeamName="Nico JANSEN" BoatID="2b1657ae-81fd-49ad-a6b5-b6b2e446d31e">
|
||||
<Crew PersonID="16ae2680-1509-4fdf-9b78-757fe0387d6d" Position="C" />
|
||||
<Crew PersonID="4dfe527f-b344-4acf-ac55-797d3fa5e4ae" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="a20f7bdf-33bc-4b3c-96b4-b79b20d213a3" TeamName="Anton WOLFF" BoatID="a20f7bdf-33bc-4b3c-96b4-b79b20d213a3">
|
||||
<Crew PersonID="4219bcb2-5786-4c55-acba-55bc40a32b7f" Position="C" />
|
||||
<Crew PersonID="44577a33-2638-4157-982a-ffa381208f1a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="6407745e-63fc-413e-9dfd-b7febdeec0c0" TeamName="Marco TARABOCHIA" BoatID="6407745e-63fc-413e-9dfd-b7febdeec0c0">
|
||||
<Crew PersonID="231f0d82-3b14-46ae-a860-8bc73661ba68" Position="C" />
|
||||
<Crew PersonID="4028656a-08bd-4fae-8167-0f480a54cd5a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="ef4672f5-4f0d-41fe-aa3d-bd89513fa42b" TeamName="Clara SCHWIRKMANN" BoatID="ef4672f5-4f0d-41fe-aa3d-bd89513fa42b">
|
||||
<Crew PersonID="a32d9b33-4339-4e96-ba3f-b46087d68750" Position="C" />
|
||||
<Crew PersonID="4ba9cdb8-400c-47f6-8e40-eba0fcc3d6d4" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="d1ce61e2-650a-49f4-b946-c727c153939f" TeamName="Carolin SCHRIMPER" BoatID="d1ce61e2-650a-49f4-b946-c727c153939f">
|
||||
<Crew PersonID="da1cf1be-5e98-46df-bba6-16afa9338e34" Position="C" />
|
||||
<Crew PersonID="eebdfb21-b77e-4feb-9b6d-c325a65d7636" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="7998cd71-41f5-4062-91bc-cb1803978548" TeamName="Elena RIXNER" BoatID="7998cd71-41f5-4062-91bc-cb1803978548">
|
||||
<Crew PersonID="d9a8dc62-ec83-4e69-9f93-5c78949b9167" Position="C" />
|
||||
<Crew PersonID="91d1aee4-bc30-4774-8fbf-ab9a48b0ae8b" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="d8b7e4f6-ecd1-4e7e-8428-d4ba5dd2c130" TeamName="Steven GÜNTHER" BoatID="d8b7e4f6-ecd1-4e7e-8428-d4ba5dd2c130">
|
||||
<Crew PersonID="f9969008-f1e1-44dc-9d98-f84f54fe6f5c" Position="C" />
|
||||
<Crew PersonID="337f3d48-874e-4249-a04b-6d3bc161db1d" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="4c2287ca-80b5-4d77-be2f-d73f0a559ad5" TeamName="Carolin SCHAAFF" BoatID="4c2287ca-80b5-4d77-be2f-d73f0a559ad5">
|
||||
<Crew PersonID="7ebfee8b-55da-4886-9a03-5ad3ad533a53" Position="C" />
|
||||
<Crew PersonID="7b43909c-da44-4105-a88a-788eb2c3dfaa" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="3f9bdabe-a088-4e06-af9c-d9db9d31dd06" TeamName="Inga-Marie HOFMANN" BoatID="3f9bdabe-a088-4e06-af9c-d9db9d31dd06">
|
||||
<Crew PersonID="4a82abee-f464-4cd8-a0a9-ae5c77c27685" Position="C" />
|
||||
<Crew PersonID="c78bd123-bf7b-4a6f-9cf7-bcbac0e9893d" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="5fa4b362-5294-4ac7-a9f9-dac7e17431ba" TeamName="Vitus HUBER" BoatID="5fa4b362-5294-4ac7-a9f9-dac7e17431ba">
|
||||
<Crew PersonID="8ce9957b-f9f5-4de2-9473-f508d8225347" Position="C" />
|
||||
<Crew PersonID="63fbcdb7-8db2-4595-a88f-f0adc0eae128" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="cb9673c2-2842-4a34-b615-dbb881717101" TeamName="J. Mika TROSIEN" BoatID="cb9673c2-2842-4a34-b615-dbb881717101">
|
||||
<Crew PersonID="2d162999-1ffc-4297-990e-b76674dbdf62" Position="C" />
|
||||
<Crew PersonID="716d25e6-1868-45f2-8a90-86626c1e6261" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="7cda1e6b-2e11-4d13-9009-dc11b691a800" TeamName="Philipp ROYLA" BoatID="7cda1e6b-2e11-4d13-9009-dc11b691a800">
|
||||
<Crew PersonID="0b241894-5e4a-4749-a24d-aac80e93215c" Position="C" />
|
||||
<Crew PersonID="c09591e1-d0f3-4ec0-85b6-e9d720eb82d3" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="516341c7-f44b-4d23-ab34-dda53584c50b" TeamName="Steven GÜNTHER" BoatID="516341c7-f44b-4d23-ab34-dda53584c50b">
|
||||
<Crew PersonID="44911916-7803-4bd8-8257-ad1e4435f384" Position="C" />
|
||||
<Crew PersonID="d98f5132-ac42-45f2-ac6b-153f44801c78" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="b4469821-ea1d-4252-84f1-e0bb03a2fe50" TeamName="Tim STEUBER" BoatID="b4469821-ea1d-4252-84f1-e0bb03a2fe50">
|
||||
<Crew PersonID="4e2492a7-69b8-4966-8b1e-31be62899b6f" Position="C" />
|
||||
<Crew PersonID="800c4191-2233-404b-9c4c-dd29b2d81b6a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="2fa7c10d-46aa-410f-9c16-e40c417659e2" TeamName="Ole MÖLLER" BoatID="2fa7c10d-46aa-410f-9c16-e40c417659e2">
|
||||
<Crew PersonID="6a1b56ee-bc33-4a5d-ad70-67d38977b2a1" Position="C" />
|
||||
<Crew PersonID="ff798273-ac5f-4551-8efb-9146081398d4" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="a6b5ba21-3241-47c5-b302-e699d79a7aec" TeamName="Bjarne STUDT" BoatID="a6b5ba21-3241-47c5-b302-e699d79a7aec">
|
||||
<Crew PersonID="683d0ac8-fdbe-437f-86f6-225bde8c5d2a" Position="C" />
|
||||
<Crew PersonID="d10a2275-dcaa-478d-b3fb-efc344dea38a" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="5a6bcb54-c91b-4de8-81db-e9b1bdf248fd" TeamName="Hannes BRÜCKNER" BoatID="5a6bcb54-c91b-4de8-81db-e9b1bdf248fd">
|
||||
<Crew PersonID="8ece290d-c0cd-418d-96c8-a159ba09e177" Position="C" />
|
||||
<Crew PersonID="153d363d-6c08-4ce3-804e-e0cd6e8be4b1" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="d7bd4a79-3341-40aa-8d13-eac2d7d0fb2b" TeamName="Julius THOMAS" BoatID="d7bd4a79-3341-40aa-8d13-eac2d7d0fb2b">
|
||||
<Crew PersonID="1a5604f1-a863-4a33-9c9a-de5253a6c783" Position="C" />
|
||||
<Crew PersonID="71f09957-41a8-4945-896f-5030d383ecb6" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="426aeb29-bc5c-462c-b9e8-ece7fef8922b" TeamName="Katja FALTIN" BoatID="426aeb29-bc5c-462c-b9e8-ece7fef8922b">
|
||||
<Crew PersonID="f7980da1-4569-4fa6-a2d7-31771682a750" Position="C" />
|
||||
<Crew PersonID="5a479457-9f4f-43ed-834c-c78d29843acb" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="c148a293-7ac5-4305-a855-f4228ff24756" TeamName="Maximilian HEILINGBRUNNER" BoatID="c148a293-7ac5-4305-a855-f4228ff24756">
|
||||
<Crew PersonID="b2907afa-dadf-4e73-b474-7b8c428e1a91" Position="C" />
|
||||
<Crew PersonID="aed68885-740e-4117-80dc-9d828ac5c437" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="f5cc2b9b-a1c2-491c-b517-f4553f1cf950" TeamName="Maike ROOS" BoatID="f5cc2b9b-a1c2-491c-b517-f4553f1cf950">
|
||||
<Crew PersonID="45fe798e-4e11-42ea-83d5-bee287b8d971" Position="C" />
|
||||
<Crew PersonID="91bb3029-8354-4f0f-86ce-2fe56b849c16" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="c6b471bf-c529-4046-8ded-f6a6ff8aa922" TeamName="Paul FELDHUSEN" BoatID="c6b471bf-c529-4046-8ded-f6a6ff8aa922">
|
||||
<Crew PersonID="a215a528-f68e-4548-8849-db33b6fda141" Position="C" />
|
||||
<Crew PersonID="f8b7edbc-c892-4ea6-a769-5a5c535267fc" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Women" TeamID="de3db693-3ff6-4f0a-b1cb-f6e9dc687171" TeamName="Lea LUDOWIG" BoatID="de3db693-3ff6-4f0a-b1cb-f6e9dc687171">
|
||||
<Crew PersonID="79bdc3b7-30ff-4f3d-9820-9b464959aa79" Position="C" />
|
||||
<Crew PersonID="91f4c4cc-8ae4-436a-a4e6-36530d4de8fc" Position="S" />
|
||||
</Team>
|
||||
<Team Gender="Men" TeamID="1dfc46ec-e5ad-4f2e-80a3-fb6e58ccb809" TeamName="Victor HELLMANN" BoatID="1dfc46ec-e5ad-4f2e-80a3-fb6e58ccb809">
|
||||
<Crew PersonID="9346bcc3-b4ea-4b0b-9603-4cf5f181a878" Position="C" />
|
||||
<Crew PersonID="e8c92676-e247-45df-af5b-e1ab03220a4e" Position="S" />
|
||||
</Team>
|
||||
<Event EventID="17733a60-305c-4142-98ef-40423449f3be" IFEventID="" Title="IDJM 2015 - 420er" Type="Regatta">
|
||||
<Division DivisionID="cd23aa66-81bc-4ae3-ba36-fa03446762b1" IFClassID="" Title="420" Gender="Open" />
|
||||
<Race RaceID="b5d1e5b9-56c5-4b48-b99c-5c030319cc73" RaceName="Q1 Yellow" RaceNumber="1" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="ee4f5208-ba80-420d-99bd-4027f7a959a1" RaceName="Q1 Blue" RaceNumber="1" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="a921cd83-e9e0-423e-9f8c-4b0c24874814" RaceName="Q2 Yellow" RaceNumber="2" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="b3838b21-43f0-4bee-a1b4-6c388ceeba9a" RaceName="Q2 Blue" RaceNumber="2" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="bc543d0c-5787-4ab5-be7a-e9362a6fbf27" RaceName="Q3 Yellow" RaceNumber="3" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="c017cb05-fed8-4529-9a0f-56faf781b0dc" RaceName="Q3 Blue" RaceNumber="3" RaceStartDate="2015-10-01+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="5f51e955-47ea-4acb-8005-8744894b7da3" RaceName="Q4 Blue" RaceNumber="4" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="264c4c84-8f8e-437a-b01c-6fcc0e8acfa6" RaceName="Q4 Yellow" RaceNumber="4" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="e143143e-caeb-4c74-9524-b9738c48742e" RaceName="Q5 Yellow" RaceNumber="5" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="005254d5-5611-4dd8-b7fe-fb09041cbc58" RaceName="Q5 Blue" RaceNumber="5" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="d19d25be-4c96-46da-9aea-f773aa0aa88b" RaceName="Q6 Blue" RaceNumber="6" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="f3514e80-e087-473b-a6b6-5c5c9a2636b3" RaceName="Q6 Yellow" RaceNumber="6" RaceStartDate="2015-10-02+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="c52b556b-a050-4310-9ee6-7d961950bafb" RaceName="F1 Gold" RaceNumber="7" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="553e25d2-1c56-4bea-8f82-f2bfcf9de359" RaceName="F1 Silver" RaceNumber="7" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="70cf1706-7751-4d3d-8aa1-8ed1f2e70be7" RaceName="F2 Gold" RaceNumber="8" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="d36d5336-177c-48b0-8957-f74bbf85e463" RaceName="F2 Silver" RaceNumber="8" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="4b3e191c-2e2e-46bf-b29c-b594139f3894" RaceName="F3 Silver" RaceNumber="9" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="4a6fa2b9-d883-4d35-8812-622311684e2b" RaceName="F3 Gold" RaceNumber="9" RaceStartDate="2015-10-03+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="c9c5dd3d-167a-41ee-aa4e-4a845a1e03d5" RaceName="F4 Silver" RaceNumber="10" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="59e53563-5a2f-406e-b19e-a5237ee370b7" RaceName="F4 Gold" RaceNumber="10" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="563a78db-a76a-4410-a89b-e8f9c060fd35" RaceName="F5 Silver" RaceNumber="11" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="b08500d0-048f-44e1-8d7e-9ff1940c5b6a" RaceName="F5 Gold" RaceNumber="11" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="241a2091-d053-440f-8187-a167da4df1b4" RaceName="F6 Gold" RaceNumber="12" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
<Race RaceID="797d94fa-3734-4b90-88bc-d110c0c3c0c1" RaceName="F6 Silver" RaceNumber="12" RaceStartDate="2015-10-04+02:00" RaceStartTime="00:00:00+02:00" RaceStatus="planned" />
|
||||
</Event>
|
||||
</SailingXRR>
|
||||
@@ -0,0 +1 @@
|
||||
{"Id":"58f73e6c-ec07-4655-972c-e5d730f0048e","Name":"YES - Young Europeans Sailing 2013","IsafId":null,"XrrUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta","Regattas":[{"Id":"14a09b88-3d45-43be-be74-cb9083484099","IsafId":"29ER","ExternalId":null,"Name":"29er","ClassName":"29er","PdfUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadReport/event/58f73e6c-ec07-4655-972c-e5d730f0048e/report/6a424c3b-bce4-4a56-a339-567e25a3bce2","XrrEntriesUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/14a09b88-3d45-43be-be74-cb9083484099?xrrType=Entries","XrrPreliminaryUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/14a09b88-3d45-43be-be74-cb9083484099?xrrType=PreliminaryResults","XrrFinalUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/14a09b88-3d45-43be-be74-cb9083484099?xrrType=FinalResults","HtmlUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/resultsFragment/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/14a09b88-3d45-43be-be74-cb9083484099","Published":"2013-06-10T13:37:57.956+02:00","Final":false},{"Id":"71a5fcc2-8d2f-43c8-84ad-2919f788fbbb","IsafId":null,"ExternalId":null,"Name":"29erXX","ClassName":null,"PdfUrl":null,"XrrEntriesUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/71a5fcc2-8d2f-43c8-84ad-2919f788fbbb?xrrType=Entries","XrrPreliminaryUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/71a5fcc2-8d2f-43c8-84ad-2919f788fbbb?xrrType=PreliminaryResults","XrrFinalUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/71a5fcc2-8d2f-43c8-84ad-2919f788fbbb?xrrType=FinalResults","HtmlUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/resultsFragment/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/71a5fcc2-8d2f-43c8-84ad-2919f788fbbb","Published":null,"Final":false},{"Id":"a4d93eb6-aac3-4423-ac1e-b761cc98ac09","IsafId":"420","ExternalId":null,"Name":"420","ClassName":"420","PdfUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadReport/event/58f73e6c-ec07-4655-972c-e5d730f0048e/report/93224d94-0350-4c92-97e2-3b203f491bcc","XrrEntriesUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/a4d93eb6-aac3-4423-ac1e-b761cc98ac09?xrrType=Entries","XrrPreliminaryUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/a4d93eb6-aac3-4423-ac1e-b761cc98ac09?xrrType=PreliminaryResults","XrrFinalUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/a4d93eb6-aac3-4423-ac1e-b761cc98ac09?xrrType=FinalResults","HtmlUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/resultsFragment/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/a4d93eb6-aac3-4423-ac1e-b761cc98ac09","Published":"2013-05-28T11:44:06.759+02:00","Final":false},{"Id":"bfe3260d-1ca1-418d-ac92-f1bd17b14df8","IsafId":null,"ExternalId":null,"Name":"470 (German Junior Championship)","ClassName":null,"PdfUrl":null,"XrrEntriesUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/bfe3260d-1ca1-418d-ac92-f1bd17b14df8?xrrType=Entries","XrrPreliminaryUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/bfe3260d-1ca1-418d-ac92-f1bd17b14df8?xrrType=PreliminaryResults","XrrFinalUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/bfe3260d-1ca1-418d-ac92-f1bd17b14df8?xrrType=FinalResults","HtmlUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/resultsFragment/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/bfe3260d-1ca1-418d-ac92-f1bd17b14df8","Published":null,"Final":false},{"Id":"bc5b3773-a88b-450b-bac1-fecb79aa836c","IsafId":null,"ExternalId":null,"Name":"505","ClassName":null,"PdfUrl":null,"XrrEntriesUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/bc5b3773-a88b-450b-bac1-fecb79aa836c?xrrType=Entries","XrrPreliminaryUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/bc5b3773-a88b-450b-bac1-fecb79aa836c?xrrType=PreliminaryResults","XrrFinalUrl":"https://orm.manage2sail.com/shadowtest_info/en-US/Home/DownloadXrr/event/58f73e6c-ec07-4655-972c-e5d730f0048e/regatta/bc5b3773-a88b-450b-bac1-fecb79aa836c?xrrType=FinalResults","HtmlUrl":"https://orm.manage2saLine truncated
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.sap.sailing.manage2sail.resultimport.test;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
public class AbstractEventResultJsonServiceTest {
|
||||
protected static final String EVENT_RESULTS_JSON = "eventResults.json";
|
||||
|
||||
protected static final String RESOURCES = "resources/";
|
||||
|
||||
protected InputStream getInputStream(String filename) throws FileNotFoundException, IOException {
|
||||
return new FileInputStream(getFile(filename));
|
||||
}
|
||||
|
||||
private File getFile(String filename) {
|
||||
return new File(RESOURCES + filename);
|
||||
}
|
||||
}
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
package com.sap.sailing.manage2sail.resultimport.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.Arrays;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.competitorimport.CompetitorProvider;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.manage2sail.RegattaResultDescriptor;
|
||||
import com.sap.sailing.manage2sail.resultimport.AbstractManage2SailProvider;
|
||||
import com.sap.sailing.manage2sail.resultimport.CompetitorDocumentProvider;
|
||||
import com.sap.sailing.manage2sail.resultimport.CompetitorImporter;
|
||||
import com.sap.sailing.resultimport.ResultUrlRegistry;
|
||||
import com.sap.sailing.xrr.resultimport.ParserFactory;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
/**
|
||||
* The Bundle URL connection implementation is really stupid; it doesn't recognize a content type for files exposed by
|
||||
* a "bundleresource://" URL. We need to disguise the JSON documents as ".txt" documents for the purpose of this test
|
||||
* to allow for the bundle resource class loader to find them.<p>
|
||||
*
|
||||
* Ironically, in an Eclipse-based test environment everything seems fine. The problem occurs when a compiled bundle
|
||||
* as a JAR file is loaded by an OSGi execution environment, such as during the Maven / Surefire tests.
|
||||
*
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public class CompetitorImportTest extends AbstractEventResultJsonServiceTest {
|
||||
@Test
|
||||
public void simpleCompetitorImportTest() throws FileNotFoundException, IOException, JAXBException {
|
||||
ResultUrlRegistry resultUrlRegistry = mock(ResultUrlRegistry.class);
|
||||
when(resultUrlRegistry.getResultUrls(AbstractManage2SailProvider.NAME)).thenReturn(Arrays.asList(getClass().getClassLoader().getResource(EVENT_RESULTS_JSON+".txt")));
|
||||
final CompetitorImporter competitorImporter = new CompetitorImporter(ParserFactory.INSTANCE, resultUrlRegistry);
|
||||
assertTrue(competitorImporter.getHasCompetitorsForRegattasInEvent().containsKey("YES - Young Europeans Sailing 2013"));
|
||||
assertTrue(competitorImporter.getHasCompetitorsForRegattasInEvent().get("YES - Young Europeans Sailing 2013").contains("29er"));
|
||||
final Iterable<CompetitorDescriptor> competitorDescriptors = competitorImporter.getCompetitorDescriptors("YES - Young Europeans Sailing 2013", null); // get competitors for all regattas in event
|
||||
assertNotNull(competitorDescriptors);
|
||||
assertEquals(933, Util.size(competitorDescriptors));
|
||||
final Iterable<CompetitorDescriptor> competitorDescriptors29er = competitorImporter.getCompetitorDescriptors("YES - Young Europeans Sailing 2013", "29er"); // get competitors only for 29er regatta
|
||||
assertNotNull(competitorDescriptors29er);
|
||||
assertEquals(134, Util.size(competitorDescriptors29er));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void simpleCompetitorImportTestNoResultsYet() throws FileNotFoundException, IOException, JAXBException {
|
||||
ResultUrlRegistry resultUrlRegistry = mock(ResultUrlRegistry.class);
|
||||
when(resultUrlRegistry.getResultUrls(AbstractManage2SailProvider.NAME)).thenReturn(Arrays.asList(getClass().getClassLoader().getResource("VSaW_420_Test.json.txt")));
|
||||
final CompetitorProvider competitorImporter = new CompetitorImporter(ParserFactory.INSTANCE, resultUrlRegistry) {
|
||||
private static final long serialVersionUID = 6450491595924905L;
|
||||
|
||||
@Override
|
||||
protected CompetitorDocumentProvider getDocumentProvider() {
|
||||
return new CompetitorDocumentProvider(this) {
|
||||
@Override
|
||||
protected URL getDocumentUrlForRegatta(RegattaResultDescriptor regattaResult) {
|
||||
return getClass().getClassLoader().getResource("VSaW_420_Test.xml");
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
assertTrue(competitorImporter.getHasCompetitorsForRegattasInEvent().containsKey("IDJM 2015 - 420er"));
|
||||
assertTrue(competitorImporter.getHasCompetitorsForRegattasInEvent().get("IDJM 2015 - 420er").contains("420"));
|
||||
final Iterable<CompetitorDescriptor> competitorDescriptors = competitorImporter.getCompetitorDescriptors("IDJM 2015 - 420er", "420"); // get competitors for 420 regatta
|
||||
assertNotNull(competitorDescriptors);
|
||||
assertEquals(100, Util.size(competitorDescriptors));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void simpleCompetitorImportTestNoResultsYetAndDivisionEmpty() throws FileNotFoundException, IOException, JAXBException {
|
||||
ResultUrlRegistry resultUrlRegistry = mock(ResultUrlRegistry.class);
|
||||
when(resultUrlRegistry.getResultUrls(AbstractManage2SailProvider.NAME)).thenReturn(Arrays.asList(getClass().getClassLoader().getResource("VSaW_420_Test_EmptyDivision.json.txt")));
|
||||
final CompetitorProvider competitorImporter = new CompetitorImporter(ParserFactory.INSTANCE, resultUrlRegistry) {
|
||||
private static final long serialVersionUID = -7647297718831584969L;
|
||||
|
||||
@Override
|
||||
protected CompetitorDocumentProvider getDocumentProvider() {
|
||||
return new CompetitorDocumentProvider(this) {
|
||||
@Override
|
||||
protected URL getDocumentUrlForRegatta(RegattaResultDescriptor regattaResult) {
|
||||
return getClass().getClassLoader().getResource("VSaW_420_Test_EmptyDivision.xml");
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
assertTrue(competitorImporter.getHasCompetitorsForRegattasInEvent().containsKey("IDJM 2015 - 420er"));
|
||||
assertTrue(competitorImporter.getHasCompetitorsForRegattasInEvent().get("IDJM 2015 - 420er").contains("420"));
|
||||
final Iterable<CompetitorDescriptor> competitorDescriptors = competitorImporter.getCompetitorDescriptors("IDJM 2015 - 420er", null); // get competitors for all regattas in event
|
||||
assertNotNull(competitorDescriptors);
|
||||
assertEquals(100, Util.size(competitorDescriptors));
|
||||
}
|
||||
}
|
||||
+1
-19
@@ -3,37 +3,19 @@ package com.sap.sailing.manage2sail.resultimport.test;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.manage2sail.EventResultDescriptor;
|
||||
import com.sap.sailing.manage2sail.Manage2SailEventResultsParserImpl;
|
||||
|
||||
public class EventResultJsonServiceTest {
|
||||
private static final String EVENT_RESULTS_JSON = "eventResults.json";
|
||||
|
||||
private static final String RESOURCES = "resources/";
|
||||
|
||||
public class EventResultJsonServiceTest extends AbstractEventResultJsonServiceTest {
|
||||
@Test
|
||||
public void testParsingEventResultsFromJson() throws IOException {
|
||||
Manage2SailEventResultsParserImpl parser = new Manage2SailEventResultsParserImpl();
|
||||
|
||||
EventResultDescriptor eventResult = parser.getEventResult(getInputStream(EVENT_RESULTS_JSON));
|
||||
assertNotNull(eventResult);
|
||||
|
||||
assertEquals(14, eventResult.getRegattaResults().size());
|
||||
}
|
||||
|
||||
private InputStream getInputStream(String filename) throws FileNotFoundException, IOException {
|
||||
return new FileInputStream(getFile(filename));
|
||||
}
|
||||
|
||||
private File getFile(String filename) {
|
||||
return new File(RESOURCES + filename);
|
||||
}
|
||||
}
|
||||
@@ -14,4 +14,6 @@ Require-Bundle: com.sap.sailing.manage2sail,
|
||||
com.sap.sailing.resultimport,
|
||||
com.sap.sailing.xrr.resultimport,
|
||||
com.sap.sse.common,
|
||||
com.sap.sailing.xrr.schema
|
||||
com.sap.sailing.xrr.schema,
|
||||
com.sap.sailing.domain.shared.android,
|
||||
com.sap.sailing.competitorimport
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
package com.sap.sailing.manage2sail.resultimport;
|
||||
|
||||
import java.net.URL;
|
||||
|
||||
import com.sap.sailing.resultimport.ResultUrlProvider;
|
||||
import com.sap.sailing.resultimport.ResultUrlRegistry;
|
||||
import com.sap.sailing.xrr.resultimport.ParserFactory;
|
||||
|
||||
public abstract class AbstractManage2SailProvider implements ResultUrlProvider {
|
||||
public static final String NAME = "Manage2Sail XRR Result Importer";
|
||||
|
||||
private final ParserFactory parserFactory;
|
||||
private final ResultUrlRegistry resultUrlRegistry;
|
||||
|
||||
protected AbstractManage2SailProvider(ParserFactory parserFactory, ResultUrlRegistry resultUrlRegistry) {
|
||||
super();
|
||||
this.parserFactory = parserFactory;
|
||||
this.resultUrlRegistry = resultUrlRegistry;
|
||||
}
|
||||
|
||||
protected ParserFactory getParserFactory() {
|
||||
return parserFactory;
|
||||
}
|
||||
|
||||
protected ResultUrlRegistry getResultUrlRegistry() {
|
||||
return resultUrlRegistry;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<URL> getUrls() {
|
||||
return getResultUrlRegistry().getResultUrls(NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOptionalSampleURL() {
|
||||
return "http://manage2sail.com/api/public/links/event/d30883d3-2876-4d7e-af49-891af6cbae1b?accesstoken=bDAv8CwsTM94ujZ&mediaType=json";
|
||||
}
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
package com.sap.sailing.manage2sail.resultimport;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.manage2sail.EventResultDescriptor;
|
||||
import com.sap.sailing.manage2sail.Manage2SailEventResultsParserImpl;
|
||||
import com.sap.sailing.manage2sail.RegattaResultDescriptor;
|
||||
import com.sap.sailing.resultimport.ResultDocumentDescriptor;
|
||||
import com.sap.sailing.resultimport.ResultUrlProvider;
|
||||
import com.sap.sailing.resultimport.impl.ResultDocumentDescriptorImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public abstract class AbstractManage2SailResultDocumentProvider {
|
||||
private final ResultUrlProvider resultUrlProvider;
|
||||
|
||||
public AbstractManage2SailResultDocumentProvider(final ResultUrlProvider resultUrlProvider) {
|
||||
this.resultUrlProvider = resultUrlProvider;
|
||||
}
|
||||
|
||||
public Iterable<ResultDocumentDescriptor> getResultDocumentDescriptors() throws IOException {
|
||||
List<ResultDocumentDescriptor> result = new ArrayList<>();
|
||||
Manage2SailEventResultsParserImpl parser = new Manage2SailEventResultsParserImpl();
|
||||
for (URL url : resultUrlProvider.getUrls()) {
|
||||
URLConnection eventResultConn = url.openConnection();
|
||||
EventResultDescriptor eventResult = parser.getEventResult((InputStream) eventResultConn.getContent());
|
||||
addResultsForEvent(result, eventResult);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void addResultsForEvent(List<ResultDocumentDescriptor> result, EventResultDescriptor eventResult)
|
||||
throws IOException {
|
||||
if (eventResult != null) {
|
||||
for (RegattaResultDescriptor regattaResult : eventResult.getRegattaResults()) {
|
||||
// Depending on the regatta type the boat class in the XRR is set or not (in the division tag)
|
||||
// Olympic boat classes -> IFClassID="2.4M" Title="2.4M open"
|
||||
// International boat classes -> IFClassID="" Title="Coachboat"
|
||||
// Open boat classes (ORC) -> IFClassID="" Title="Welcome Race ORC-Club"
|
||||
// -> therefore we need to take the regatta title as boat class where the IsafID is not available
|
||||
String boatClass = regattaResult.getIsafId() != null && !regattaResult.getIsafId().isEmpty() ? regattaResult.getIsafId() : regattaResult.getName();
|
||||
if (acceptRegatta(regattaResult)) {
|
||||
final URL resultUrl = getDocumentUrlForRegatta(regattaResult);
|
||||
if (resultUrl != null) {
|
||||
URLConnection regattaResultConn = resultUrl.openConnection();
|
||||
result.add(new ResultDocumentDescriptorImpl((InputStream) regattaResultConn.getContent(),
|
||||
resultUrl.toString(), regattaResult.getPublishedAt()==null?null:new MillisecondsTimePoint(regattaResult.getPublishedAt()),
|
||||
eventResult.getName(), regattaResult.getName(), boatClass, regattaResult
|
||||
.getCompetitorGenderType()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
abstract protected boolean acceptRegatta(RegattaResultDescriptor regattaResult);
|
||||
|
||||
abstract protected URL getDocumentUrlForRegatta(RegattaResultDescriptor regattaResult);
|
||||
}
|
||||
+8
@@ -13,6 +13,7 @@ import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.util.tracker.ServiceTracker;
|
||||
|
||||
import com.sap.sailing.competitorimport.CompetitorProvider;
|
||||
import com.sap.sailing.domain.common.ScoreCorrectionProvider;
|
||||
import com.sap.sailing.resultimport.ResultUrlRegistry;
|
||||
import com.sap.sailing.resultimport.impl.ResultUrlRegistryServiceTrackerCustomizer;
|
||||
@@ -33,6 +34,13 @@ public class Activator implements BundleActivator {
|
||||
ParserFactory.INSTANCE, resultUrlRegistry);
|
||||
return service;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CompetitorProvider configureCompetitorProvider(ResultUrlRegistry resultUrlRegistry) {
|
||||
final CompetitorProvider service = new CompetitorImporter(ParserFactory.INSTANCE,
|
||||
resultUrlRegistry);
|
||||
return service;
|
||||
}
|
||||
});
|
||||
|
||||
resultUrlRegistryServiceTracker.open();
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.sap.sailing.manage2sail.resultimport;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
|
||||
import com.sap.sailing.manage2sail.RegattaResultDescriptor;
|
||||
import com.sap.sailing.resultimport.ResultDocumentDescriptor;
|
||||
import com.sap.sailing.resultimport.ResultUrlProvider;
|
||||
|
||||
public class CompetitorDocumentProvider extends AbstractManage2SailResultDocumentProvider {
|
||||
public CompetitorDocumentProvider(ResultUrlProvider resultUrlProvider) {
|
||||
super(resultUrlProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ResultDocumentDescriptor> getResultDocumentDescriptors() throws IOException {
|
||||
return super.getResultDocumentDescriptors();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected URL getDocumentUrlForRegatta(RegattaResultDescriptor regattaResult) {
|
||||
return regattaResult.getXrrEntriesUrl();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean acceptRegatta(RegattaResultDescriptor regattaResult) {
|
||||
return true; // no further requirements; doesn't need to be final nor have an appropriate time point
|
||||
}
|
||||
}
|
||||
+186
@@ -0,0 +1,186 @@
|
||||
package com.sap.sailing.manage2sail.resultimport;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
|
||||
import com.sap.sailing.competitorimport.CompetitorProvider;
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.impl.NationalityImpl;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.dto.PersonDTO;
|
||||
import com.sap.sailing.resultimport.ResultDocumentDescriptor;
|
||||
import com.sap.sailing.resultimport.ResultUrlRegistry;
|
||||
import com.sap.sailing.xrr.resultimport.Parser;
|
||||
import com.sap.sailing.xrr.resultimport.ParserFactory;
|
||||
import com.sap.sailing.xrr.schema.Boat;
|
||||
import com.sap.sailing.xrr.schema.Division;
|
||||
import com.sap.sailing.xrr.schema.Event;
|
||||
import com.sap.sailing.xrr.schema.Person;
|
||||
import com.sap.sailing.xrr.schema.Race;
|
||||
import com.sap.sailing.xrr.schema.RaceResult;
|
||||
import com.sap.sailing.xrr.schema.RegattaResults;
|
||||
import com.sap.sailing.xrr.schema.SeriesResult;
|
||||
import com.sap.sailing.xrr.schema.Team;
|
||||
|
||||
public class CompetitorImporter extends AbstractManage2SailProvider implements CompetitorProvider {
|
||||
private static final long serialVersionUID = 7389956404604333931L;
|
||||
private static final Logger logger = Logger.getLogger(CompetitorImporter.class.getName());
|
||||
private final CompetitorDocumentProvider documentProvider;
|
||||
|
||||
public CompetitorImporter(ParserFactory parserFactory, ResultUrlRegistry resultUrlRegistry) {
|
||||
super(parserFactory, resultUrlRegistry);
|
||||
documentProvider = new CompetitorDocumentProvider(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Set<String>> getHasCompetitorsForRegattasInEvent() throws IOException {
|
||||
Map<String, Set<String>> result = new HashMap<>();
|
||||
for (ResultDocumentDescriptor resultDocDescr : getDocumentProvider().getResultDocumentDescriptors()) {
|
||||
final String eventName = resultDocDescr.getEventName();
|
||||
final String regattaName = resultDocDescr.getRegattaName();
|
||||
Set<String> set = result.get(eventName);
|
||||
if (set == null) {
|
||||
set = new HashSet<>();
|
||||
result.put(eventName, set);
|
||||
}
|
||||
set.add(regattaName);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<CompetitorDescriptor> getCompetitorDescriptors(String eventName, String regattaName) throws JAXBException, IOException {
|
||||
final List<CompetitorDescriptor> result = new ArrayList<>();
|
||||
final Map<String, CompetitorDescriptor> resultsByTeamID = new HashMap<>();
|
||||
final Map<String, CompetitorDescriptor> teamsWithoutRaceAssignments = new HashMap<>(); // keys are the teamID
|
||||
for (ResultDocumentDescriptor resultDocDescr : getDocumentProvider().getResultDocumentDescriptors()) {
|
||||
if (resultDocDescr.getEventName().equals(eventName) &&
|
||||
(regattaName == null || regattaName.equals(resultDocDescr.getRegattaName()))) {
|
||||
final Parser parser = getParserFactory().createParser(resultDocDescr.getInputStream(), resultDocDescr.getEventName());
|
||||
try {
|
||||
final RegattaResults regattaResults = parser.parse();
|
||||
// If teams are found outside of a Division context then no boat class would be assigned to the
|
||||
// competitor. However, if only one Division exists it can be used as default and the boat class
|
||||
// can therefore be derived from it. This, however, is not clear until the document has been fully
|
||||
// consumed. So we keep track of the teams found outside of Divisions, and if exactly one division
|
||||
// is found we create the CompetitorDescriptors as if they were part of that Division; otherwise
|
||||
// we need to come up with a default boat class instead.
|
||||
final Set<Team> teamsOutsideOfDivision = new HashSet<>();
|
||||
Map<Division, Event> divisions = new HashMap<>();
|
||||
for (Object o : regattaResults.getPersonOrBoatOrTeam()) {
|
||||
if (o instanceof Team) {
|
||||
final Team team = (Team) o;
|
||||
teamsOutsideOfDivision.add(team);
|
||||
} else if (o instanceof Event) {
|
||||
Event event = (Event) o;
|
||||
for (Object eventO : event.getRaceOrDivisionOrRegattaSeriesResult()) {
|
||||
if (eventO instanceof Division) {
|
||||
Division division = (Division) eventO;
|
||||
divisions.put(division, event);
|
||||
if (regattaName == null || regattaName.equals(division.getTitle())) {
|
||||
for (Object divisionO : division.getSeriesResultOrRaceResultOrTRResult()) {
|
||||
String raceID = null;
|
||||
Team team = null;
|
||||
if (divisionO instanceof RaceResult) {
|
||||
RaceResult raceResult = (RaceResult) divisionO;
|
||||
raceID = raceResult.getRaceID();
|
||||
team = parser.getTeam(raceResult.getTeamID());
|
||||
} else if (divisionO instanceof SeriesResult) {
|
||||
SeriesResult seriesResult = (SeriesResult) divisionO;
|
||||
team = parser.getTeam(seriesResult.getTeamID());
|
||||
}
|
||||
if (team != null) {
|
||||
final CompetitorDescriptor competitorDescriptor = createCompetitorDescriptor(
|
||||
team, parser, event, division, raceID);
|
||||
resultsByTeamID.put(team.getTeamID(), competitorDescriptor);
|
||||
result.add(competitorDescriptor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (final Team teamOutsideOfDivision : teamsOutsideOfDivision) {
|
||||
if (divisions.size() == 1) { // exactly one Division; use as default for teams outside of division that were not assigned to a division later
|
||||
if (!resultsByTeamID.containsKey(teamOutsideOfDivision.getTeamID())) {
|
||||
final CompetitorDescriptor competitorDescriptor = createCompetitorDescriptor(
|
||||
teamOutsideOfDivision, parser, divisions.values().iterator().next(), divisions.keySet().iterator().next(), /* raceID */ null);
|
||||
resultsByTeamID.put(teamOutsideOfDivision.getTeamID(), competitorDescriptor);
|
||||
result.add(competitorDescriptor);
|
||||
}
|
||||
} else {
|
||||
teamsWithoutRaceAssignments.put(teamOutsideOfDivision.getTeamID(),
|
||||
createCompetitorDescriptor(teamOutsideOfDivision, parser, /* event */ null, /* division */ null, /* raceID */ null));
|
||||
}
|
||||
}
|
||||
} catch (JAXBException e) {
|
||||
logger.log(Level.WARNING, "Exception trying to read competitors for event "+resultDocDescr.getEventName()+
|
||||
", regatta "+resultDocDescr.getRegattaName()+" from document "+resultDocDescr.getDocumentName(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (final Map.Entry<String, CompetitorDescriptor> tid : teamsWithoutRaceAssignments.entrySet()) {
|
||||
if (!resultsByTeamID.containsKey(tid.getKey())) {
|
||||
result.add(tid.getValue());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private CompetitorDescriptor createCompetitorDescriptor(Team team, final Parser parser, Event event,
|
||||
Division division, String raceID) {
|
||||
final Boat boat = parser.getBoat(team.getBoatID());
|
||||
final String sailNumber = boat.getSailNumber();
|
||||
final Race race = parser.getRace(raceID);
|
||||
final Nationality[] teamNationality = new Nationality[] {
|
||||
// use that of team; if not defined for team, use first nationality of a team member that has one defined
|
||||
team.getNOC() == null ? null : new NationalityImpl(team.getNOC().name())
|
||||
};
|
||||
final String boatClassName = parser.getBoatClassName(division);
|
||||
List<PersonDTO> persons = team.getCrew().stream().sorted((c1, c2) -> -c1.getPosition().name().compareTo(c2.getPosition().name())).map((crew)->{
|
||||
Person xrrPerson = parser.getPerson(crew.getPersonID());
|
||||
String name = xrrPerson.getGivenName()+" "+xrrPerson.getFamilyName();
|
||||
final Nationality nationality;
|
||||
if (xrrPerson.getNOC() == null) {
|
||||
nationality = null;
|
||||
} else {
|
||||
nationality = new NationalityImpl(xrrPerson.getNOC().name());
|
||||
if (teamNationality[0] == null) {
|
||||
teamNationality[0] = nationality;
|
||||
}
|
||||
}
|
||||
PersonDTO person = new PersonDTO(
|
||||
name, /* dateOfBirth */ null, /* description */ xrrPerson.getGender()==null?null:xrrPerson.getGender().name(),
|
||||
nationality==null?null:nationality.getCountryCode().getThreeLetterIOCCode());
|
||||
return person;
|
||||
}).collect(Collectors.toList());
|
||||
final CompetitorDescriptor competitorDescriptor = new CompetitorDescriptor(
|
||||
event==null?null:event.getTitle(),
|
||||
division==null?null:(division.getTitle() + (division.getGender() == null ? "" : division.getGender().name())),
|
||||
boatClassName, race != null ? race.getRaceName() : null, /* fleetName */ null, sailNumber,
|
||||
team.getTeamName(), team.getTeamName(), boat.getBoatName(),
|
||||
teamNationality[0] == null ? null : teamNationality[0].getCountryCode(),
|
||||
persons, /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null);
|
||||
return competitorDescriptor;
|
||||
}
|
||||
|
||||
protected CompetitorDocumentProvider getDocumentProvider() {
|
||||
return documentProvider;
|
||||
}
|
||||
}
|
||||
+22
-41
@@ -1,59 +1,40 @@
|
||||
package com.sap.sailing.manage2sail.resultimport;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.manage2sail.EventResultDescriptor;
|
||||
import com.sap.sailing.manage2sail.Manage2SailEventResultsParserImpl;
|
||||
import com.sap.sailing.manage2sail.RegattaResultDescriptor;
|
||||
import com.sap.sailing.resultimport.ResultDocumentDescriptor;
|
||||
import com.sap.sailing.resultimport.ResultDocumentProvider;
|
||||
import com.sap.sailing.resultimport.ResultUrlProvider;
|
||||
import com.sap.sailing.resultimport.impl.ResultDocumentDescriptorImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public class Manage2SailResultDocumentProvider implements ResultDocumentProvider {
|
||||
private final ResultUrlProvider resultUrlProvider;
|
||||
public class Manage2SailResultDocumentProvider extends AbstractManage2SailResultDocumentProvider implements ResultDocumentProvider {
|
||||
|
||||
public Manage2SailResultDocumentProvider(final ResultUrlProvider resultUrlProvider) {
|
||||
this.resultUrlProvider = resultUrlProvider;
|
||||
super(resultUrlProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ResultDocumentDescriptor> getResultDocumentDescriptors() throws IOException {
|
||||
List<ResultDocumentDescriptor> result = new ArrayList<>();
|
||||
Manage2SailEventResultsParserImpl parser = new Manage2SailEventResultsParserImpl();
|
||||
for (URL url : resultUrlProvider.getUrls()) {
|
||||
URLConnection eventResultConn = url.openConnection();
|
||||
EventResultDescriptor eventResult = parser.getEventResult((InputStream) eventResultConn.getContent());
|
||||
if (eventResult != null) {
|
||||
for (RegattaResultDescriptor regattaResult : eventResult.getRegattaResults()) {
|
||||
// Depending on the regatta type the boat class in the XRR is set or not (in the division tag)
|
||||
// Olympic boat classes -> IFClassID="2.4M" Title="2.4M open"
|
||||
// International boat classes -> IFClassID="" Title="Coachboat"
|
||||
// Open boat classes (ORC) -> IFClassID="" Title="Welcome Race ORC-Club"
|
||||
// -> therefore we need to take the regatta title as boat class where the IsafID is not available
|
||||
String boatClass = regattaResult.getIsafId() != null && !regattaResult.getIsafId().isEmpty() ? regattaResult.getIsafId() : regattaResult.getName();
|
||||
if (regattaResult.getIsFinal() != null && regattaResult.getPublishedAt() != null) {
|
||||
if (regattaResult.getIsFinal() && regattaResult.getXrrFinalUrl() != null) {
|
||||
URLConnection regattaResultConn = regattaResult.getXrrFinalUrl().openConnection();
|
||||
result.add(new ResultDocumentDescriptorImpl((InputStream) regattaResultConn.getContent(),
|
||||
regattaResult.getXrrPreliminaryUrl().toString(), new MillisecondsTimePoint(regattaResult.getPublishedAt()),
|
||||
eventResult.getName(), regattaResult.getName(), boatClass, regattaResult.getCompetitorGenderType()));
|
||||
} else if (regattaResult.getXrrPreliminaryUrl() != null) {
|
||||
URLConnection regattaResultConn = regattaResult.getXrrPreliminaryUrl().openConnection();
|
||||
result.add(new ResultDocumentDescriptorImpl((InputStream) regattaResultConn.getContent(),
|
||||
regattaResult.getXrrPreliminaryUrl().toString(), new MillisecondsTimePoint(regattaResult.getPublishedAt()),
|
||||
eventResult.getName(), regattaResult.getName(), boatClass, regattaResult.getCompetitorGenderType()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return super.getResultDocumentDescriptors();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected URL getDocumentUrlForRegatta(RegattaResultDescriptor regattaResult) {
|
||||
final URL resultUrl;
|
||||
if (regattaResult.getIsFinal() && regattaResult.getXrrFinalUrl() != null) {
|
||||
resultUrl = regattaResult.getXrrFinalUrl();
|
||||
} else if (regattaResult.getXrrPreliminaryUrl() != null) {
|
||||
resultUrl = regattaResult.getXrrPreliminaryUrl();
|
||||
} else {
|
||||
resultUrl = null;
|
||||
}
|
||||
return resultUrl;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean acceptRegatta(RegattaResultDescriptor regattaResult) {
|
||||
return regattaResult.getIsFinal() != null && regattaResult.getPublishedAt() != null;
|
||||
}
|
||||
|
||||
}
|
||||
+22
-43
@@ -1,7 +1,6 @@
|
||||
package com.sap.sailing.manage2sail.resultimport;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
@@ -17,7 +16,6 @@ import com.sap.sailing.domain.common.RegattaScoreCorrections;
|
||||
import com.sap.sailing.domain.common.ScoreCorrectionProvider;
|
||||
import com.sap.sailing.resultimport.ResultDocumentDescriptor;
|
||||
import com.sap.sailing.resultimport.ResultDocumentProvider;
|
||||
import com.sap.sailing.resultimport.ResultUrlProvider;
|
||||
import com.sap.sailing.resultimport.ResultUrlRegistry;
|
||||
import com.sap.sailing.xrr.resultimport.Parser;
|
||||
import com.sap.sailing.xrr.resultimport.ParserFactory;
|
||||
@@ -29,26 +27,20 @@ import com.sap.sailing.xrr.schema.RegattaResults;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, ResultUrlProvider {
|
||||
public class ScoreCorrectionProviderImpl extends AbstractManage2SailProvider implements ScoreCorrectionProvider {
|
||||
private static final Logger logger = Logger.getLogger(ScoreCorrectionProviderImpl.class.getName());
|
||||
private static final long serialVersionUID = 222663322974305822L;
|
||||
|
||||
public static final String NAME = "Manage2Sail XRR Result Importer";
|
||||
|
||||
private final ParserFactory parserFactory;
|
||||
private final ResultUrlRegistry resultUrlRegistry;
|
||||
private final ResultDocumentProvider documentProvider;
|
||||
|
||||
public ScoreCorrectionProviderImpl(ResultDocumentProvider documentProvider, ParserFactory parserFactory, ResultUrlRegistry resultUrlRegistry) {
|
||||
super(parserFactory, resultUrlRegistry);
|
||||
this.documentProvider = documentProvider;
|
||||
this.parserFactory = parserFactory;
|
||||
this.resultUrlRegistry = resultUrlRegistry;
|
||||
}
|
||||
|
||||
public ScoreCorrectionProviderImpl(ParserFactory parserFactory, ResultUrlRegistry resultUrlRegistry) {
|
||||
super(parserFactory, resultUrlRegistry);
|
||||
this.documentProvider = new Manage2SailResultDocumentProvider(this);
|
||||
this.parserFactory = parserFactory;
|
||||
this.resultUrlRegistry = resultUrlRegistry;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -87,29 +79,26 @@ public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, Res
|
||||
Parser parser = resolveParser(eventName, boatClassName);
|
||||
try {
|
||||
RegattaResults regattaResults = parser.parse();
|
||||
// TimePoint timePoint = XRRParserUtil.calculateTimePointForRegattaResults(regattaResults);
|
||||
// if ((timePoint == null && timePointPublished == null) || (timePoint != null && timePoint.equals(timePointPublished))) {
|
||||
for (Object o : regattaResults.getPersonOrBoatOrTeam()) {
|
||||
if (o instanceof Event) {
|
||||
Event event = (Event) o;
|
||||
if (event.getTitle().equals(eventName)) {
|
||||
for (Object eventO : event.getRaceOrDivisionOrRegattaSeriesResult()) {
|
||||
if (eventO instanceof Division) {
|
||||
Division division = (Division) eventO;
|
||||
EventGender divisionGender = division.getGender();
|
||||
String divisionBoatClassAndGender = parser.getBoatClassName(division);
|
||||
if(divisionGender != null) {
|
||||
divisionBoatClassAndGender += ", " + divisionGender.name();
|
||||
}
|
||||
if (boatClassName.equalsIgnoreCase(divisionBoatClassAndGender) || boatClassName.contains(divisionBoatClassAndGender)) {
|
||||
return new XRRRegattaResultsAsScoreCorrections(event, division, this,
|
||||
parser);
|
||||
}
|
||||
for (Object o : regattaResults.getPersonOrBoatOrTeam()) {
|
||||
if (o instanceof Event) {
|
||||
Event event = (Event) o;
|
||||
if (event.getTitle().equals(eventName)) {
|
||||
for (Object eventO : event.getRaceOrDivisionOrRegattaSeriesResult()) {
|
||||
if (eventO instanceof Division) {
|
||||
Division division = (Division) eventO;
|
||||
EventGender divisionGender = division.getGender();
|
||||
String divisionBoatClassAndGender = parser.getBoatClassName(division);
|
||||
if(divisionGender != null) {
|
||||
divisionBoatClassAndGender += ", " + divisionGender.name();
|
||||
}
|
||||
if (boatClassName.equalsIgnoreCase(divisionBoatClassAndGender) || boatClassName.contains(divisionBoatClassAndGender)) {
|
||||
return new XRRRegattaResultsAsScoreCorrections(event, division, this,
|
||||
parser);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
} catch (JAXBException e) {
|
||||
logger.info("Parse error during XRR import. Ignoring document " + parser.toString());
|
||||
@@ -122,24 +111,14 @@ public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, Res
|
||||
Parser result = null;
|
||||
for (ResultDocumentDescriptor resultDocDescr : documentProvider.getResultDocumentDescriptors()) {
|
||||
String boatClassAndGenderType = resultDocDescr.getBoatClass();
|
||||
if(resultDocDescr.getCompetitorGenderType() != null) {
|
||||
if (resultDocDescr.getCompetitorGenderType() != null) {
|
||||
boatClassAndGenderType += ", " + resultDocDescr.getCompetitorGenderType().name();
|
||||
}
|
||||
if(eventName.equals(resultDocDescr.getEventName()) && boatClassName.equals(boatClassAndGenderType)) {
|
||||
result = parserFactory.createParser(resultDocDescr.getInputStream(), resultDocDescr.getEventName());
|
||||
if (eventName.equals(resultDocDescr.getEventName()) && boatClassName.equals(boatClassAndGenderType)) {
|
||||
result = getParserFactory().createParser(resultDocDescr.getInputStream(), resultDocDescr.getEventName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<URL> getUrls() {
|
||||
return resultUrlRegistry.getResultUrls(NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOptionalSampleURL() {
|
||||
return "http://manage2sail.com/api/public/links/event/d30883d3-2876-4d7e-af49-891af6cbae1b?accesstoken=bDAv8CwsTM94ujZ&mediaType=json";
|
||||
}
|
||||
}
|
||||
-1
@@ -31,7 +31,6 @@ public class Manage2SailEventResultsParserImpl implements Manage2SailEventResult
|
||||
|
||||
/**
|
||||
* @param is closed before the method returns, also in case of exception
|
||||
* @throws IOException
|
||||
*/
|
||||
public EventResultDescriptor getEventResult(InputStream is) throws IOException {
|
||||
EventResultDescriptor result = null;
|
||||
|
||||
+36
-36
@@ -10,71 +10,71 @@ public class RaceResultDescriptor {
|
||||
private String fleetName;
|
||||
private Boolean isTracked;
|
||||
private Date startTime;
|
||||
|
||||
/** Possible states: Scheduled, StartSequence, Racing, Finished, GeneralRecall, Postponed, Abandoned */
|
||||
private String status;
|
||||
|
||||
/** Possible states: Scheduled, StartSequence, Racing, Finished, GeneralRecall, Postponed, Abandoned */
|
||||
private String status;
|
||||
|
||||
public Integer getRaceColumnNumber() {
|
||||
return raceColumnNumber;
|
||||
}
|
||||
return raceColumnNumber;
|
||||
}
|
||||
|
||||
public void setRaceColumnNumber(Integer raceColumnNumber) {
|
||||
this.raceColumnNumber = raceColumnNumber;
|
||||
}
|
||||
|
||||
this.raceColumnNumber = raceColumnNumber;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getSeriesName() {
|
||||
return seriesName;
|
||||
}
|
||||
|
||||
return seriesName;
|
||||
}
|
||||
|
||||
public void setSeriesName(String seriesName) {
|
||||
this.seriesName = seriesName;
|
||||
}
|
||||
|
||||
this.seriesName = seriesName;
|
||||
}
|
||||
|
||||
public String getFleetName() {
|
||||
return fleetName;
|
||||
}
|
||||
|
||||
return fleetName;
|
||||
}
|
||||
|
||||
public void setFleetName(String fleetName) {
|
||||
this.fleetName = fleetName;
|
||||
}
|
||||
this.fleetName = fleetName;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
public Boolean isTracked() {
|
||||
return isTracked;
|
||||
}
|
||||
|
||||
|
||||
public void setTracked(Boolean isTracked) {
|
||||
this.isTracked = isTracked;
|
||||
}
|
||||
|
||||
public Date getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
public Date getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public void setStartTime(Date startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
public void setStartTime(Date startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
}
|
||||
+30
-7
@@ -26,76 +26,99 @@ public class RegattaResultDescriptor {
|
||||
public RegattaResultDescriptor() {
|
||||
raceResults = new ArrayList<RaceResultDescriptor>();
|
||||
}
|
||||
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getIsafId() {
|
||||
return isafId;
|
||||
}
|
||||
|
||||
public void setIsafId(String isafId) {
|
||||
this.isafId = isafId;
|
||||
}
|
||||
|
||||
public String getExternalId() {
|
||||
return externalId;
|
||||
}
|
||||
|
||||
public void setExternalId(String externalId) {
|
||||
this.externalId = externalId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getClassName() {
|
||||
return className;
|
||||
}
|
||||
|
||||
public void setClassName(String className) {
|
||||
this.className = className;
|
||||
}
|
||||
|
||||
public URL getPdfUrl() {
|
||||
return pdfUrl;
|
||||
}
|
||||
|
||||
public void setPdfUrl(URL pdfUrl) {
|
||||
this.pdfUrl = pdfUrl;
|
||||
}
|
||||
|
||||
public URL getXrrPreliminaryUrl() {
|
||||
return xrrPreliminaryUrl;
|
||||
}
|
||||
|
||||
public void setXrrPreliminaryUrl(URL xrrPreliminaryUrl) {
|
||||
this.xrrPreliminaryUrl = xrrPreliminaryUrl;
|
||||
}
|
||||
|
||||
public URL getXrrFinalUrl() {
|
||||
return xrrFinalUrl;
|
||||
}
|
||||
|
||||
public void setXrrFinalUrl(URL xrrFinalUrl) {
|
||||
this.xrrFinalUrl = xrrFinalUrl;
|
||||
}
|
||||
|
||||
public URL getHtmlUrl() {
|
||||
return htmlUrl;
|
||||
}
|
||||
|
||||
public void setHtmlUrl(URL htmlUrl) {
|
||||
this.htmlUrl = htmlUrl;
|
||||
}
|
||||
|
||||
public Date getPublishedAt() {
|
||||
return publishedAt;
|
||||
}
|
||||
|
||||
public void setPublishedAt(Date publishedAt) {
|
||||
this.publishedAt = publishedAt;
|
||||
}
|
||||
|
||||
public Boolean getIsFinal() {
|
||||
return isFinal;
|
||||
}
|
||||
|
||||
public void setIsFinal(Boolean isFinal) {
|
||||
this.isFinal = isFinal;
|
||||
}
|
||||
|
||||
public CompetitorGenderType getCompetitorGenderType() {
|
||||
return competitorGenderType;
|
||||
}
|
||||
|
||||
public void setCompetitorGenderType(CompetitorGenderType competitorGenderType) {
|
||||
this.competitorGenderType = competitorGenderType;
|
||||
}
|
||||
@@ -108,11 +131,11 @@ public class RegattaResultDescriptor {
|
||||
this.raceResults = raceResults;
|
||||
}
|
||||
|
||||
public URL getXrrEntriesUrl() {
|
||||
return xrrEntriesUrl;
|
||||
}
|
||||
public URL getXrrEntriesUrl() {
|
||||
return xrrEntriesUrl;
|
||||
}
|
||||
|
||||
public void setXrrEntriesUrl(URL xrrEntriesUrl) {
|
||||
this.xrrEntriesUrl = xrrEntriesUrl;
|
||||
}
|
||||
public void setXrrEntriesUrl(URL xrrEntriesUrl) {
|
||||
this.xrrEntriesUrl = xrrEntriesUrl;
|
||||
}
|
||||
}
|
||||
@@ -9,9 +9,8 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Export-Package: com.sap.sailing.resultimport,
|
||||
com.sap.sailing.resultimport.impl
|
||||
Import-Package: com.sap.sailing.domain.base.impl,
|
||||
Import-Package: com.sap.sailing.competitorimport,
|
||||
com.sap.sailing.domain.common,
|
||||
com.sap.sailing.domain.common.impl,
|
||||
com.sap.sailing.domain.persistence,
|
||||
com.sap.sailing.server,
|
||||
org.osgi.framework;version="1.5.0",
|
||||
|
||||
+42
-3
@@ -2,11 +2,29 @@ package com.sap.sailing.resultimport.impl;
|
||||
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.framework.ServiceReference;
|
||||
import org.osgi.util.tracker.ServiceTracker;
|
||||
import org.osgi.util.tracker.ServiceTrackerCustomizer;
|
||||
|
||||
import com.sap.sailing.competitorimport.CompetitorProvider;
|
||||
import com.sap.sailing.domain.common.ScoreCorrectionProvider;
|
||||
import com.sap.sailing.resultimport.ResultUrlRegistry;
|
||||
|
||||
/**
|
||||
* Helps passing on the reference to the usually central instance of a {@link ResultUrlRegistry} service implementation
|
||||
* to the services implementing result and competitor import.
|
||||
* <p>
|
||||
*
|
||||
* Subclass this abstract service tracker customizer and use it when creating a {@link ServiceTracker} for the
|
||||
* {@link ResultUrlRegistry} class, then {@link ServiceTracker#open()} that tracker in your result / competitor
|
||||
* importer's activator. Then, the {@link #configureScoreCorrectionProvider(ResultUrlRegistry)} and
|
||||
* {@link #configureCompetitorProvider(ResultUrlRegistry)} methods will be invoked when the tracker obtains the
|
||||
* reference to a/the {@link ResultUrlRegistry} service implementation. If they return a non-{@code null} importer
|
||||
* implementation then that implementation will be registered in turn as a {@link ScoreCorrectionProvider} or
|
||||
* {@link CompetitorProvider}, respectively.
|
||||
*
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public abstract class ResultUrlRegistryServiceTrackerCustomizer implements
|
||||
ServiceTrackerCustomizer<ResultUrlRegistry, ResultUrlRegistry> {
|
||||
|
||||
@@ -21,14 +39,35 @@ public abstract class ResultUrlRegistryServiceTrackerCustomizer implements
|
||||
ServiceReference<ResultUrlRegistry> serviceRefUrlRegistry = bundleContext
|
||||
.getServiceReference(ResultUrlRegistry.class);
|
||||
ResultUrlRegistry resultUrlRegistry = bundleContext.getService(serviceRefUrlRegistry);
|
||||
|
||||
ScoreCorrectionProvider scoreCorrectionProvider = configureScoreCorrectionProvider(resultUrlRegistry);
|
||||
bundleContext.registerService(ScoreCorrectionProvider.class, scoreCorrectionProvider, /* properties */null);
|
||||
registerScoreCorrectionProviderService(resultUrlRegistry);
|
||||
registerCompetitorImportService(resultUrlRegistry);
|
||||
return resultUrlRegistry;
|
||||
}
|
||||
|
||||
protected void registerScoreCorrectionProviderService(ResultUrlRegistry resultUrlRegistry) {
|
||||
ScoreCorrectionProvider scoreCorrectionProvider = configureScoreCorrectionProvider(resultUrlRegistry);
|
||||
if (scoreCorrectionProvider != null) {
|
||||
bundleContext.registerService(ScoreCorrectionProvider.class, scoreCorrectionProvider, /* properties */null);
|
||||
}
|
||||
}
|
||||
|
||||
private void registerCompetitorImportService(ResultUrlRegistry resultUrlRegistry) {
|
||||
CompetitorProvider competitorProvider = configureCompetitorProvider(resultUrlRegistry);
|
||||
if (competitorProvider != null) {
|
||||
bundleContext.registerService(CompetitorProvider.class, competitorProvider, /* properties */null);
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract ScoreCorrectionProvider configureScoreCorrectionProvider(ResultUrlRegistry resultUrlRegistry);
|
||||
|
||||
/**
|
||||
* @return {@code null} by default, so a subclass does not have to make mention of a {@link CompetitorProvider}
|
||||
* implementation
|
||||
*/
|
||||
protected CompetitorProvider configureCompetitorProvider(ResultUrlRegistry resultUrlRegistry) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifiedService(ServiceReference<ResultUrlRegistry> reference, ResultUrlRegistry service) {
|
||||
}
|
||||
|
||||
@@ -34,5 +34,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
@@ -12,6 +12,8 @@
|
||||
<booleanAttribute key="default_auto_start" value="true"/>
|
||||
<intAttribute key="default_start_level" value="4"/>
|
||||
<booleanAttribute key="includeOptional" value="true"/>
|
||||
<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.pde.ui.launcher.PDESourceLookupDirector"/>
|
||||
<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <sourceLookupDirector> <sourceContainers duplicates="false"> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathContainer path=&quot;com.google.gwt.eclipse.core.GWT_CONTAINER&quot;/&gt;&#13;&#10;" typeId="org.eclipse.jdt.launching.sourceContainer.classpathContainer"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;default/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.default"/> </sourceContainers> </sourceLookupDirector> "/>
|
||||
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
|
||||
@@ -34,5 +36,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.monitoring@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.monitoring@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
Executable → Regular
+1
-1
@@ -33,5 +33,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
Executable → Regular
+1
-1
@@ -27,6 +27,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
Executable → Regular
+1
-1
@@ -27,6 +27,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
+1
-1
@@ -27,6 +27,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
+1
-1
@@ -29,6 +29,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
Executable → Regular
+1
-1
@@ -27,6 +27,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
Executable → Regular
+1
-1
@@ -27,5 +27,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
Executable → Regular
+1
-1
@@ -33,5 +33,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway.test.support@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway.test.support@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
Executable → Regular
+1
-1
@@ -36,6 +36,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
Executable → Regular
+1
-1
@@ -27,6 +27,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
Executable → Regular
+1
-1
@@ -27,5 +27,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="true"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
Executable → Regular
+1
-1
@@ -26,5 +26,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
Executable → Regular
+1
-1
@@ -28,6 +28,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway.test.support@5:true,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.servlet@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.competitorimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.polars.datamining.shared@default:default,com.sap.sailing.polars.datamining@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway.test.support@5:true,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sailing.yachtscoring.resultimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.annotations@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
+6
@@ -107,4 +107,10 @@ public class PersistentCompetitorStore extends TransientCompetitorStoreImpl impl
|
||||
storeTo.storeCompetitor(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCompetitors(Iterable<Competitor> competitors) {
|
||||
storeTo.storeCompetitors(competitors);
|
||||
super.addCompetitors(competitors);
|
||||
}
|
||||
}
|
||||
@@ -33,6 +33,16 @@
|
||||
should be at roughly the same version to ensure binary compatibility for the
|
||||
polar sheet data.
|
||||
</li>
|
||||
<li>In the <em>Tracked Races / Competitors</em> tab there is now a new button "Import Competitor"
|
||||
that opens a dialog for selecting an import source. The Manage2Sail source is configured through
|
||||
the same URL as used for the result importer. Select the regatta from which you want to import,
|
||||
then check for which competitors there are matching / similar existing competitors. Single
|
||||
selection on the left lets you map to one of the matching existing competitors. Ultimately,
|
||||
select those competitors (including those you mapped to existing ones) you want to import.
|
||||
Optionally provide a search tag for them which will be added to the new and mapped-to
|
||||
competitors for easy retrieval later when selecting competitors to add to a regatta
|
||||
or race.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="articleSubheadline">October 2016</h2>
|
||||
|
||||
@@ -5,6 +5,7 @@ import javax.xml.bind.JAXBException;
|
||||
import com.sap.sailing.xrr.schema.Boat;
|
||||
import com.sap.sailing.xrr.schema.Division;
|
||||
import com.sap.sailing.xrr.schema.Person;
|
||||
import com.sap.sailing.xrr.schema.Race;
|
||||
import com.sap.sailing.xrr.schema.RegattaResults;
|
||||
import com.sap.sailing.xrr.schema.Team;
|
||||
|
||||
@@ -18,4 +19,6 @@ public interface Parser {
|
||||
Team getTeam(String teamID);
|
||||
|
||||
Person getPerson(String personID);
|
||||
|
||||
Race getRace(String raceID);
|
||||
}
|
||||
+18
@@ -12,7 +12,9 @@ import javax.xml.bind.Unmarshaller;
|
||||
import com.sap.sailing.xrr.resultimport.Parser;
|
||||
import com.sap.sailing.xrr.schema.Boat;
|
||||
import com.sap.sailing.xrr.schema.Division;
|
||||
import com.sap.sailing.xrr.schema.Event;
|
||||
import com.sap.sailing.xrr.schema.Person;
|
||||
import com.sap.sailing.xrr.schema.Race;
|
||||
import com.sap.sailing.xrr.schema.RegattaResults;
|
||||
import com.sap.sailing.xrr.schema.TRResult;
|
||||
import com.sap.sailing.xrr.schema.Team;
|
||||
@@ -22,6 +24,7 @@ public class ParserImpl implements Parser {
|
||||
private final Map<String, Person> personByID;
|
||||
private final Map<String, Team> teamByID;
|
||||
private final Map<String, Boat> boatByID;
|
||||
private final Map<String, Race> raceByID;
|
||||
private final InputStream inputStream;
|
||||
private final String name;
|
||||
|
||||
@@ -30,6 +33,7 @@ public class ParserImpl implements Parser {
|
||||
this.personByID = new HashMap<>();
|
||||
this.teamByID = new HashMap<>();
|
||||
this.boatByID = new HashMap<>();
|
||||
this.raceByID = new HashMap<>();
|
||||
this.inputStream = inputStream;
|
||||
this.name = name;
|
||||
}
|
||||
@@ -50,6 +54,14 @@ public class ParserImpl implements Parser {
|
||||
} else if (o instanceof Team) {
|
||||
Team team = (Team) o;
|
||||
teamByID.put(team.getTeamID(), team);
|
||||
} else if (o instanceof Event) {
|
||||
Event event = (Event) o;
|
||||
for (Object o2 : event.getRaceOrDivisionOrRegattaSeriesResult()) {
|
||||
if (o2 instanceof Race) {
|
||||
Race race = (Race) o2;
|
||||
raceByID.put(race.getRaceID(), race);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return regattaResults;
|
||||
@@ -75,8 +87,14 @@ public class ParserImpl implements Parser {
|
||||
return personByID.get(personID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Race getRace(String raceID) {
|
||||
return raceByID.get(raceID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return name==null?"":name;
|
||||
}
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package com.sap.sse.common.test;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
public class StringCompareTest {
|
||||
@Test
|
||||
public void testStringCompare() {
|
||||
assertTrue(Util.equalsWithNull("a", "A", /* ignoreCase */ true));
|
||||
assertTrue(Util.equalsWithNull("a", "a", /* ignoreCase */ true));
|
||||
assertFalse(Util.equalsWithNull("a", "A", /* ignoreCase */ false));
|
||||
assertTrue(Util.equalsWithNull(null, null, /* ignoreCase */ true));
|
||||
assertFalse(Util.equalsWithNull("a", null, /* ignoreCase */ true));
|
||||
assertTrue(Util.equalsWithNull(null, null, /* ignoreCase */ false));
|
||||
assertFalse(Util.equalsWithNull("a", null, /* ignoreCase */ false));
|
||||
assertFalse(Util.equalsWithNull("A", null, /* ignoreCase */ true));
|
||||
assertTrue(Util.equalsWithNull(null, null, /* ignoreCase */ false));
|
||||
assertFalse(Util.equalsWithNull("A", null, /* ignoreCase */ false));
|
||||
assertFalse(Util.equalsWithNull(null, "b", /* ignoreCase */ true));
|
||||
assertFalse(Util.equalsWithNull(null, "B", /* ignoreCase */ true));
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.sap.sse.common;
|
||||
|
||||
public interface CountryCode {
|
||||
import java.io.Serializable;
|
||||
|
||||
public interface CountryCode extends Serializable {
|
||||
|
||||
String getTwoLetterISOCode();
|
||||
|
||||
|
||||
@@ -339,6 +339,12 @@ public class Util {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static boolean equalsWithNull(String s1, String s2, boolean ignoreCase) {
|
||||
final String s1LC = ignoreCase?s1==null?null:s1.toLowerCase():s1;
|
||||
final String s2LC = ignoreCase?s2==null?null:s2.toLowerCase():s2;
|
||||
return equalsWithNull(s1LC, s2LC);
|
||||
}
|
||||
|
||||
/**
|
||||
* <code>null</code> is permissible for both, <code>o1</code> and <code>o2</code>, where a <code>null</code> value
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.sap.sse.common.impl;
|
||||
import com.sap.sse.common.CountryCode;
|
||||
|
||||
public class CountryCodeImpl implements CountryCode {
|
||||
private static final long serialVersionUID = 74265853281480956L;
|
||||
|
||||
private final String name;
|
||||
private final String threeLetterIOCCode;
|
||||
private final String twoLetterISOCode;
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package com.sap.sse.gwt.client.controls.busyindicator;
|
||||
|
||||
/**
|
||||
* Declare that we can change the busy state when some actions are performed.
|
||||
*
|
||||
* @author Alexander Tatarinovich
|
||||
*/
|
||||
public interface BusyDisplay {
|
||||
void setBusy(boolean isBusy);
|
||||
}
|
||||
+2
-2
@@ -7,7 +7,7 @@ import com.google.gwt.user.client.ui.FlowPanel;
|
||||
* A widget to show if something is currently busy.
|
||||
* @author Lennart Hensler (D054527)
|
||||
*/
|
||||
public abstract class BusyIndicator extends FlowPanel {
|
||||
public abstract class BusyIndicator extends FlowPanel implements BusyDisplay {
|
||||
|
||||
protected final static String STYLE_NAME_PREFIX = "busyIndicator-";
|
||||
protected final static BusyIndicatorResources RESOURCES = GWT.create(BusyIndicatorResources.class);
|
||||
@@ -18,6 +18,7 @@ public abstract class BusyIndicator extends FlowPanel {
|
||||
* Sets the <code>busy</code> state of the BusyIndicator, which displays or hides the busy indicator.
|
||||
* @param busy The new <code>busy</code> state
|
||||
*/
|
||||
@Override
|
||||
public void setBusy(boolean busy) {
|
||||
this.busy = busy;
|
||||
}
|
||||
@@ -25,5 +26,4 @@ public abstract class BusyIndicator extends FlowPanel {
|
||||
public boolean isBusy() {
|
||||
return busy;
|
||||
}
|
||||
|
||||
}
|
||||
Regular → Executable
+1
@@ -92,6 +92,7 @@
|
||||
<module>com.sap.sse.replication</module>
|
||||
<module>com.sap.sse.threadmanager</module>
|
||||
<module>com.sap.sse.filestorage</module>
|
||||
<module>com.sap.sailing.competitorimport</module>
|
||||
<module>com.sap.sailing.domain</module>
|
||||
<module>com.sap.sailing.geocoding</module>
|
||||
<module>com.sap.sailing.datamining</module>
|
||||
|
||||
Reference in new issue
Block a user