mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-22 21:55:39 +00:00
fixing bug 3650 by using the top-level document's ClassName field for the boat class creation
Change-Id: I92a07396718db0393fe2034390eba008061be5a8
This commit is contained in:
+9
@@ -2,6 +2,7 @@ package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
@@ -44,6 +45,7 @@ import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||
import com.sap.sse.common.util.NaturalComparator;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.controls.busyindicator.BusyIndicator;
|
||||
import com.sap.sse.gwt.client.controls.busyindicator.SimpleBusyIndicator;
|
||||
@@ -226,6 +228,13 @@ public class StructureImportManagementPanel extends SimplePanel implements Regat
|
||||
@Override
|
||||
public void onSuccess(List<EventDTO> events) {
|
||||
existingEvents = events;
|
||||
Collections.sort(existingEvents, new Comparator<EventDTO>() {
|
||||
private final NaturalComparator comp = new NaturalComparator();
|
||||
@Override
|
||||
public int compare(EventDTO o1, EventDTO o2) {
|
||||
return comp.compare(o1.getName(), o2.getName());
|
||||
}
|
||||
});
|
||||
sailingEventsListBox.addItem(stringMessages.selectSailingEvent());
|
||||
for (EventDTO event : existingEvents) {
|
||||
sailingEventsListBox.addItem(event.getName());
|
||||
|
||||
@@ -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;org.eclipse.jdt.launching.JRE_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;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"/>
|
||||
|
||||
+1
-5
@@ -57,11 +57,7 @@ public class ParserImpl implements Parser {
|
||||
|
||||
@Override
|
||||
public String getBoatClassName(Division division) {
|
||||
String result = division.getIFClassID();
|
||||
if (result == null || result.isEmpty()) {
|
||||
result = division.getTitle();
|
||||
}
|
||||
return result;
|
||||
return XRRParserUtil.getBoatClassName(division);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+8
@@ -3,6 +3,7 @@ package com.sap.sailing.xrr.resultimport.impl;
|
||||
import javax.xml.datatype.DatatypeConstants;
|
||||
import javax.xml.datatype.XMLGregorianCalendar;
|
||||
|
||||
import com.sap.sailing.xrr.schema.Division;
|
||||
import com.sap.sailing.xrr.schema.RegattaResults;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
@@ -32,4 +33,11 @@ public class XRRParserUtil {
|
||||
return timePoint;
|
||||
}
|
||||
|
||||
public static String getBoatClassName(Division division) {
|
||||
String result = division.getIFClassID();
|
||||
if (result == null || result.isEmpty()) {
|
||||
result = division.getTitle();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
+9
-8
@@ -35,6 +35,7 @@ import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
|
||||
import com.sap.sailing.xrr.resultimport.ParserFactory;
|
||||
import com.sap.sailing.xrr.resultimport.impl.XRRParserUtil;
|
||||
import com.sap.sailing.xrr.schema.Boat;
|
||||
import com.sap.sailing.xrr.schema.Crew;
|
||||
import com.sap.sailing.xrr.schema.Division;
|
||||
@@ -52,6 +53,7 @@ import com.sap.sailing.xrr.structureimport.buildstructure.Series;
|
||||
import com.sap.sailing.xrr.structureimport.buildstructure.SetRacenumberStrategy;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.impl.AbstractColor;
|
||||
import com.sapsailing.xrr.structureimport.eventimport.EventImport;
|
||||
import com.sapsailing.xrr.structureimport.eventimport.RegattaJSON;
|
||||
@@ -81,12 +83,12 @@ public class StructureImporter {
|
||||
}
|
||||
|
||||
public Iterable<Regatta> getRegattas(Iterable<RegattaJSON> regattas) {
|
||||
Iterable<RegattaResults> parsedRegattas = parseRegattas(regattas);
|
||||
Iterable<Pair<RegattaJSON, RegattaResults>> parsedRegattas = parseRegattas(regattas);
|
||||
Set<Regatta> addSpecificRegattas = new HashSet<Regatta>();
|
||||
for (RegattaResults result : parsedRegattas) {
|
||||
for (Pair<RegattaJSON, RegattaResults> result : parsedRegattas) {
|
||||
List<Race> races = new ArrayList<Race>();
|
||||
// assuming that the last element in getPersonOrBoatOrTeam is an event
|
||||
Event event = (Event) result.getPersonOrBoatOrTeam().get(result.getPersonOrBoatOrTeam().size() - 1);
|
||||
Event event = (Event) result.getB().getPersonOrBoatOrTeam().get(result.getB().getPersonOrBoatOrTeam().size() - 1);
|
||||
Iterable<Object> raceOrDivisionOrRegattaSeriesResults = event.getRaceOrDivisionOrRegattaSeriesResult();
|
||||
for (Object raceOrDivisionOrRegattaSeriesResult : raceOrDivisionOrRegattaSeriesResults) {
|
||||
if (raceOrDivisionOrRegattaSeriesResult instanceof Race) {
|
||||
@@ -98,23 +100,22 @@ public class StructureImporter {
|
||||
final TimePoint endDate = null; // TODO can regatta end time be inferred from XRR document?
|
||||
RegattaImpl regatta = new RegattaImpl(RegattaImpl.getDefaultName(event.getTitle(), ((Division) event
|
||||
.getRaceOrDivisionOrRegattaSeriesResult().get(0)).getTitle()),
|
||||
baseDomainFactory.getOrCreateBoatClass(((Division) event.getRaceOrDivisionOrRegattaSeriesResult()
|
||||
.get(0)).getTitle()), startDate, endDate, getSeries(buildStructure), false,
|
||||
baseDomainFactory.getOrCreateBoatClass(result.getA().getBoatClass()), startDate, endDate, getSeries(buildStructure), false,
|
||||
this.baseDomainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT), event.getEventID(), null, OneDesignRankingMetric::new);
|
||||
addSpecificRegattas.add(regatta);
|
||||
}
|
||||
return addSpecificRegattas;
|
||||
}
|
||||
|
||||
private Iterable<RegattaResults> parseRegattas(final Iterable<RegattaJSON> selectedRegattas) {
|
||||
final Set<RegattaResults> result = Collections.synchronizedSet(new HashSet<RegattaResults>());
|
||||
private Iterable<Pair<RegattaJSON, RegattaResults>> parseRegattas(final Iterable<RegattaJSON> selectedRegattas) {
|
||||
final Set<Pair<RegattaJSON, RegattaResults>> result = Collections.synchronizedSet(new HashSet<Pair<RegattaJSON, RegattaResults>>());
|
||||
Set<Thread> threads = new HashSet<Thread>();
|
||||
for (final RegattaJSON selectedRegatta : selectedRegattas) {
|
||||
Thread thread = new Thread("XRR Importer " + selectedRegatta.getName()) {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
result.add(parseRegattaXML(selectedRegatta.getXrrEntriesUrl()));
|
||||
result.add(new Pair<>(selectedRegatta, parseRegattaXML(selectedRegatta.getXrrEntriesUrl())));
|
||||
} catch (JAXBException | IOException e) {
|
||||
logger.info("Parse error during XRR import. Ignoring document " + selectedRegatta.getName());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user