mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-18 19:59:09 +00:00
added new bundle com.sap.sailing.resultimport to share common interfaces across multiple providers
Adapted UI to these changes
This commit is contained in:
@@ -173,6 +173,13 @@ Computes leaderboard information for sailing races and offers RESTful APIs to al
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.sap.sailing.resultimport"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.sap.sailing.kiworesultimport"
|
||||
download-size="0"
|
||||
|
||||
@@ -9,4 +9,5 @@ Import-Package: org.osgi.framework;version="1.3.0"
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Require-Bundle: org.junit4;bundle-version="4.8.2",
|
||||
com.sap.sailing.freg.resultimport,
|
||||
com.sap.sailing.domain.common
|
||||
com.sap.sailing.domain.common,
|
||||
com.sap.sailing.resultimport
|
||||
|
||||
+3
-3
@@ -17,8 +17,8 @@ import java.util.regex.Pattern;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.freg.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.freg.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
import com.sap.sailing.freg.resultimport.impl.FregHtmlParser;
|
||||
|
||||
public class SimpleHtmlParsingTest {
|
||||
@@ -38,7 +38,7 @@ public class SimpleHtmlParsingTest {
|
||||
List<CompetitorRow> result = regattaResults.getCompetitorResults();
|
||||
assertFalse(result.isEmpty());
|
||||
assertEquals(57, result.size());
|
||||
assertTrue(regattaResults.getMetadata().contains("PRE- WORLD \n 2012 - COUPE INTERNATIONALE DE FRANCE 505"));
|
||||
assertTrue(regattaResults.getMetadata().get("info1").contains("PRE- WORLD \n 2012 - COUPE INTERNATIONALE DE FRANCE 505"));
|
||||
for (CompetitorRow row : result) {
|
||||
if (Util.contains(row.getNames(), "MARTIN Aline")) {
|
||||
assertEquals("FRA 8716", row.getSailID());
|
||||
|
||||
@@ -9,6 +9,6 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Import-Package: org.osgi.framework;version="1.3.0"
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Require-Bundle: com.sap.sailing.domain.common,
|
||||
com.sap.sailing.domain
|
||||
Export-Package: com.sap.sailing.freg.resultimport,
|
||||
com.sap.sailing.freg.resultimport.impl;x-friends:="com.sap.sailing.freg.resultimport.test"
|
||||
com.sap.sailing.domain,
|
||||
com.sap.sailing.resultimport
|
||||
Export-Package: com.sap.sailing.freg.resultimport.impl;x-friends:="com.sap.sailing.freg.resultimport.test"
|
||||
|
||||
-13
@@ -1,13 +0,0 @@
|
||||
package com.sap.sailing.freg.resultimport;
|
||||
|
||||
public interface CompetitorEntry {
|
||||
|
||||
boolean isDiscarded();
|
||||
|
||||
Double getScore();
|
||||
|
||||
String getMaxPointsReason();
|
||||
|
||||
Integer getRank();
|
||||
|
||||
}
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
package com.sap.sailing.freg.resultimport;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface RegattaResults {
|
||||
/**
|
||||
* Data such as regatta name, operating institution, comments and dates
|
||||
*/
|
||||
List<String> getMetadata();
|
||||
|
||||
List<CompetitorRow> getCompetitorResults();
|
||||
}
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.sap.sailing.freg.resultimport.impl;
|
||||
|
||||
import com.sap.sailing.freg.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
|
||||
public class CompetitorEntryImpl implements CompetitorEntry {
|
||||
private final Integer rank;
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package com.sap.sailing.freg.resultimport.impl;
|
||||
|
||||
import com.sap.sailing.freg.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.freg.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
|
||||
public class CompetitorRowImpl implements CompetitorRow {
|
||||
private final Integer totalRank;
|
||||
|
||||
+12
-5
@@ -5,14 +5,16 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.sap.sailing.freg.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.freg.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.freg.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
|
||||
public class FregHtmlParser {
|
||||
private static final Logger logger = Logger.getLogger(FregHtmlParser.class.getName());
|
||||
@@ -105,14 +107,19 @@ public class FregHtmlParser {
|
||||
final List<CompetitorRow> result = new ArrayList<CompetitorRow>();
|
||||
List<String> rowContents = getRowContents(is);
|
||||
is.close();
|
||||
final List<String> metadata = getTagContents(rowContents.get(0), "b"); // header information like regatta name and dates are all in <B> tags
|
||||
final Map<String, String> metadata = new HashMap<String, String>();
|
||||
List<String> tagContents = getTagContents(rowContents.get(0), "b"); // header information like regatta name and dates are all in <B> tags
|
||||
int j = 1;
|
||||
for (String metaInfo : tagContents) {
|
||||
metadata.put("info" + j++, metaInfo);
|
||||
}
|
||||
for (int i = 2; i < rowContents.size() - 1; i++) {
|
||||
List<String> tdContent = getTagContents(rowContents.get(i), "td");
|
||||
result.add(createCompetitorRow(tdContent));
|
||||
}
|
||||
return new RegattaResults() {
|
||||
@Override
|
||||
public List<String> getMetadata() {
|
||||
public Map<String, String> getMetadata() {
|
||||
return metadata;
|
||||
}
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -6,8 +6,8 @@ import java.util.List;
|
||||
import com.sap.sailing.domain.common.RegattaScoreCorrections;
|
||||
import com.sap.sailing.domain.common.ScoreCorrectionProvider;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.freg.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.freg.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
|
||||
public class RegattaScoreCorrectionsImpl implements RegattaScoreCorrections {
|
||||
private final ScoreCorrectionProviderImpl provider;
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.common.MaxPointsReason;
|
||||
import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionForCompetitorInRace;
|
||||
import com.sap.sailing.freg.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
|
||||
public class ScoreCorrectionForCompetitorInRaceImpl implements ScoreCorrectionForCompetitorInRace {
|
||||
private static final Logger logger = Logger.getLogger(ScoreCorrectionForCompetitorInRaceImpl.class.getName());
|
||||
|
||||
+3
-3
@@ -7,9 +7,9 @@ import java.util.Set;
|
||||
import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionForCompetitorInRace;
|
||||
import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionsForRace;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.freg.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.freg.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.freg.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
|
||||
public class ScoreCorrectionForRaceImpl implements ScoreCorrectionsForRace {
|
||||
private final int raceNumberStartingWithOne;
|
||||
|
||||
+5
-6
@@ -8,7 +8,6 @@ import java.net.URLConnection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -17,10 +16,10 @@ import com.sap.sailing.domain.common.RegattaScoreCorrections;
|
||||
import com.sap.sailing.domain.common.ScoreCorrectionProvider;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.freg.resultimport.FregResultProvider;
|
||||
import com.sap.sailing.freg.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.UrlResultProvider;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
|
||||
public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, FregResultProvider {
|
||||
public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, UrlResultProvider {
|
||||
private static final long serialVersionUID = 5853404150107387702L;
|
||||
|
||||
private final Set<URL> allUrls;
|
||||
@@ -63,8 +62,8 @@ public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, Fre
|
||||
* @return the first non-empty string of the list of metadata, hoping it's something pointing at the boat class at least...
|
||||
*/
|
||||
private String getBoatClassName(RegattaResults regattaResult) {
|
||||
List<String> metadata = regattaResult.getMetadata();
|
||||
for (String metadatum : metadata) {
|
||||
Map<String, String> metadata = regattaResult.getMetadata();
|
||||
for (String metadatum : metadata.values()) {
|
||||
if (metadatum != null && metadatum.length() > 0) {
|
||||
return metadatum;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,8 @@ Require-Bundle: com.sap.sailing.domain,
|
||||
com.sap.sailing.server.replication,
|
||||
com.googlecode.java-diff-utils;bundle-version="1.3.0",
|
||||
com.sap.sailing.freg.resultimport,
|
||||
com.sap.sailing.winregatta.resultimport;bundle-version="1.0.0"
|
||||
com.sap.sailing.winregatta.resultimport,
|
||||
com.sap.sailing.resultimport
|
||||
Bundle-Activator: com.sap.sailing.gwt.ui.server.Activator
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Export-Package: com.sap.sailing.gwt.ui.client;x-friends:="com.sap.sailing.gwt.ui.test",
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ public class AdminConsoleEntryPoint extends AbstractEntryPoint implements Regatt
|
||||
leaderboardConfigPanel.setSize("90%", "90%");
|
||||
tabPanel.add(leaderboardConfigPanel, stringMessages.leaderboardConfiguration(), /* asHTML */ false);
|
||||
regattaDisplayers.add(leaderboardConfigPanel);
|
||||
tabPanel.add(new FregResultImportUrlPanel(sailingService, this, stringMessages), stringMessages.resultImportUrls(), /* asHTML */ false);
|
||||
tabPanel.add(new ResultImportUrlsManagementPanel(sailingService, this, stringMessages), stringMessages.resultImportUrls(), /* asHTML */ false);
|
||||
tabPanel.add(new ReplicationPanel(sailingService, this, stringMessages), stringMessages.replication(), /* asHTML */ false);
|
||||
|
||||
tabPanel.selectTab(0);
|
||||
|
||||
+172
-168
@@ -1,168 +1,172 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
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.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.RadioButton;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.TextfieldEntryDialog;
|
||||
|
||||
public class FregResultImportUrlPanel extends FlowPanel {
|
||||
private final ListBox urlListBox;
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final ErrorReporter errorReporter;
|
||||
private final StringMessages stringMessages;
|
||||
private String selectedProviderName = "FREG";
|
||||
|
||||
public FregResultImportUrlPanel(SailingServiceAsync sailingService, ErrorReporter errorReporter,
|
||||
StringMessages stringMessages) {
|
||||
this.sailingService = sailingService;
|
||||
this.errorReporter = errorReporter;
|
||||
this.stringMessages = stringMessages;
|
||||
urlListBox = new ListBox(/* multiple select */ true);
|
||||
Button addButton = new Button(stringMessages.add());
|
||||
Button removeButton = new Button(stringMessages.remove());
|
||||
Button refreshButton = new Button(stringMessages.refresh());
|
||||
addButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
addUrl();
|
||||
}
|
||||
});
|
||||
removeButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
removeSelectedUrls();
|
||||
}
|
||||
});
|
||||
refreshButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
refreshUrlList();
|
||||
}
|
||||
});
|
||||
VerticalPanel vp = new VerticalPanel();
|
||||
HorizontalPanel providerSelectionPanel = new HorizontalPanel();
|
||||
vp.add(providerSelectionPanel);
|
||||
|
||||
RadioButton fregProviderRB = new RadioButton("providerSelection", "FREG");
|
||||
fregProviderRB.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
selectedProviderName = "FREG";
|
||||
refreshUrlList();
|
||||
}
|
||||
});
|
||||
providerSelectionPanel.add(fregProviderRB);
|
||||
|
||||
RadioButton winRegattaProviderRB = new RadioButton("providerSelection", "WinRegatta");
|
||||
winRegattaProviderRB.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
selectedProviderName = "WinRegatta";
|
||||
refreshUrlList();
|
||||
}
|
||||
});
|
||||
providerSelectionPanel.add(winRegattaProviderRB);
|
||||
|
||||
vp.add(urlListBox);
|
||||
HorizontalPanel buttonPanel = new HorizontalPanel();
|
||||
vp.add(buttonPanel);
|
||||
buttonPanel.add(addButton);
|
||||
buttonPanel.add(removeButton);
|
||||
buttonPanel.add(refreshButton);
|
||||
add(vp);
|
||||
refreshUrlList();
|
||||
}
|
||||
|
||||
private void refreshUrlList() {
|
||||
sailingService.getResultImportUrls(selectedProviderName, new AsyncCallback<List<String>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(stringMessages.errorRefreshingResultImportUrlList(caught.getMessage()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<String> result) {
|
||||
urlListBox.clear();
|
||||
for (String s : result) {
|
||||
urlListBox.addItem(s);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void removeSelectedUrls() {
|
||||
Set<String> toRemove = new HashSet<String>();
|
||||
for (int i=urlListBox.getItemCount()-1; i>=0; i--) {
|
||||
if (urlListBox.isItemSelected(i)) {
|
||||
toRemove.add(urlListBox.getItemText(i));
|
||||
urlListBox.removeItem(i);
|
||||
}
|
||||
}
|
||||
sailingService.removeResultImportURLs(selectedProviderName, toRemove, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(stringMessages.errorRemovingResultImportUrls(caught.getMessage()));
|
||||
refreshUrlList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
Window.setStatus(stringMessages.successfullyUpdatedResultImportUrls());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void addUrl() {
|
||||
final DataEntryDialog<String> dialog = new TextfieldEntryDialog(stringMessages.addResultImportUrl(),
|
||||
stringMessages.addResultImportUrl(), stringMessages.add(), stringMessages.cancel(), "http://",
|
||||
new DataEntryDialog.Validator<String>() {
|
||||
@Override
|
||||
public String getErrorMessage(String valueToValidate) {
|
||||
String result = null;
|
||||
if (valueToValidate == null || valueToValidate.length() == 0) {
|
||||
result = stringMessages.pleaseEnterNonEmptyUrl();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}, new AsyncCallback<String>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
// user cancelled; just don't add
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String url) {
|
||||
urlListBox.addItem(url);
|
||||
sailingService.addResultImportUrl(selectedProviderName, url, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(stringMessages.errorAddingResultImportUrl(caught.getMessage()));
|
||||
refreshUrlList(); // take back our pre-mature addition
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
Window.setStatus(stringMessages.successfullyUpdatedResultImportUrls());
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
}
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
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.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.RadioButton;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.TextfieldEntryDialog;
|
||||
|
||||
public class ResultImportUrlsManagementPanel extends FlowPanel {
|
||||
private final ListBox urlListBox;
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final ErrorReporter errorReporter;
|
||||
private final StringMessages stringMessages;
|
||||
private String selectedProviderName = FREG_PROVIDER;
|
||||
|
||||
private final static String FREG_PROVIDER = "FREG HTML Score Importer";
|
||||
private final static String WINREGATTA_PROVIDER = "'WinRegatta Plus' XLS Score Importer";
|
||||
|
||||
public ResultImportUrlsManagementPanel(SailingServiceAsync sailingService, ErrorReporter errorReporter,
|
||||
StringMessages stringMessages) {
|
||||
this.sailingService = sailingService;
|
||||
this.errorReporter = errorReporter;
|
||||
this.stringMessages = stringMessages;
|
||||
urlListBox = new ListBox(/* multiple select */ true);
|
||||
Button addButton = new Button(stringMessages.add());
|
||||
Button removeButton = new Button(stringMessages.remove());
|
||||
Button refreshButton = new Button(stringMessages.refresh());
|
||||
addButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
addUrl();
|
||||
}
|
||||
});
|
||||
removeButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
removeSelectedUrls();
|
||||
}
|
||||
});
|
||||
refreshButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
refreshUrlList();
|
||||
}
|
||||
});
|
||||
VerticalPanel vp = new VerticalPanel();
|
||||
HorizontalPanel providerSelectionPanel = new HorizontalPanel();
|
||||
vp.add(providerSelectionPanel);
|
||||
|
||||
RadioButton fregProviderRB = new RadioButton("providerSelection", FREG_PROVIDER);
|
||||
fregProviderRB.setValue(true);
|
||||
fregProviderRB.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
selectedProviderName = FREG_PROVIDER;
|
||||
refreshUrlList();
|
||||
}
|
||||
});
|
||||
providerSelectionPanel.add(fregProviderRB);
|
||||
|
||||
RadioButton winRegattaProviderRB = new RadioButton("providerSelection", WINREGATTA_PROVIDER);
|
||||
winRegattaProviderRB.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
selectedProviderName = WINREGATTA_PROVIDER;
|
||||
refreshUrlList();
|
||||
}
|
||||
});
|
||||
providerSelectionPanel.add(winRegattaProviderRB);
|
||||
|
||||
vp.add(urlListBox);
|
||||
HorizontalPanel buttonPanel = new HorizontalPanel();
|
||||
vp.add(buttonPanel);
|
||||
buttonPanel.add(addButton);
|
||||
buttonPanel.add(removeButton);
|
||||
buttonPanel.add(refreshButton);
|
||||
add(vp);
|
||||
refreshUrlList();
|
||||
}
|
||||
|
||||
private void refreshUrlList() {
|
||||
sailingService.getResultImportUrls(selectedProviderName, new AsyncCallback<List<String>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(stringMessages.errorRefreshingResultImportUrlList(caught.getMessage()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<String> result) {
|
||||
urlListBox.clear();
|
||||
for (String s : result) {
|
||||
urlListBox.addItem(s);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void removeSelectedUrls() {
|
||||
Set<String> toRemove = new HashSet<String>();
|
||||
for (int i=urlListBox.getItemCount()-1; i>=0; i--) {
|
||||
if (urlListBox.isItemSelected(i)) {
|
||||
toRemove.add(urlListBox.getItemText(i));
|
||||
urlListBox.removeItem(i);
|
||||
}
|
||||
}
|
||||
sailingService.removeResultImportURLs(selectedProviderName, toRemove, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(stringMessages.errorRemovingResultImportUrls(caught.getMessage()));
|
||||
refreshUrlList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
Window.setStatus(stringMessages.successfullyUpdatedResultImportUrls());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void addUrl() {
|
||||
final DataEntryDialog<String> dialog = new TextfieldEntryDialog(stringMessages.addResultImportUrl(),
|
||||
stringMessages.addResultImportUrl(), stringMessages.add(), stringMessages.cancel(), "http://",
|
||||
new DataEntryDialog.Validator<String>() {
|
||||
@Override
|
||||
public String getErrorMessage(String valueToValidate) {
|
||||
String result = null;
|
||||
if (valueToValidate == null || valueToValidate.length() == 0) {
|
||||
result = stringMessages.pleaseEnterNonEmptyUrl();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}, new AsyncCallback<String>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
// user cancelled; just don't add
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String url) {
|
||||
urlListBox.addItem(url);
|
||||
sailingService.addResultImportUrl(selectedProviderName, url, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(stringMessages.errorAddingResultImportUrl(caught.getMessage()));
|
||||
refreshUrlList(); // take back our pre-mature addition
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
Window.setStatus(stringMessages.successfullyUpdatedResultImportUrls());
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
}
|
||||
+2
@@ -254,4 +254,6 @@ public interface SailingService extends RemoteService {
|
||||
|
||||
Void updateLeaderboardScoreCorrectionMetadata(String leaderboardName, Date timePointOfLastCorrectionValidity,
|
||||
String comment);
|
||||
|
||||
List<String> getUrlResultProviderNames();
|
||||
}
|
||||
|
||||
+2
@@ -423,4 +423,6 @@ public interface SailingServiceAsync {
|
||||
|
||||
void addResultImportUrl(String resultProviderName, String url,
|
||||
AsyncCallback<Void> callback);
|
||||
|
||||
void getUrlResultProviderNames(AsyncCallback<List<String>> callback);
|
||||
}
|
||||
|
||||
+25
-52
@@ -120,7 +120,6 @@ import com.sap.sailing.domain.tracking.impl.WindImpl;
|
||||
import com.sap.sailing.domain.tractracadapter.DomainFactory;
|
||||
import com.sap.sailing.domain.tractracadapter.RaceRecord;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracConfiguration;
|
||||
import com.sap.sailing.freg.resultimport.FregResultProvider;
|
||||
import com.sap.sailing.geocoding.ReverseGeocoder;
|
||||
import com.sap.sailing.gwt.ui.client.SailingService;
|
||||
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
|
||||
@@ -170,6 +169,7 @@ import com.sap.sailing.gwt.ui.shared.WaypointDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindTrackInfoDTO;
|
||||
import com.sap.sailing.resultimport.UrlResultProvider;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard;
|
||||
@@ -212,7 +212,6 @@ import com.sap.sailing.server.replication.ReplicaDescriptor;
|
||||
import com.sap.sailing.server.replication.ReplicationFactory;
|
||||
import com.sap.sailing.server.replication.ReplicationMasterDescriptor;
|
||||
import com.sap.sailing.server.replication.ReplicationService;
|
||||
import com.sap.sailing.winregatta.resultimport.WinRegattaResultProvider;
|
||||
|
||||
/**
|
||||
* The server side implementation of the RPC service.
|
||||
@@ -2555,23 +2554,23 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
scoreCorrectionForCompetitor.isDiscarded(), scoreCorrectionForCompetitor.getMaxPointsReason());
|
||||
}
|
||||
|
||||
private FregResultProvider getFregService() {
|
||||
FregResultProvider result = null;
|
||||
@Override
|
||||
public List<String> getUrlResultProviderNames() {
|
||||
List<String> result = new ArrayList<String>();
|
||||
for (ScoreCorrectionProvider scp : getScoreCorrectionProviders()) {
|
||||
if (scp instanceof FregResultProvider) {
|
||||
result = (FregResultProvider) scp;
|
||||
break;
|
||||
if (scp instanceof UrlResultProvider) {
|
||||
result.add(scp.getName());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private WinRegattaResultProvider getWinRegattaService() {
|
||||
WinRegattaResultProvider result = null;
|
||||
private UrlResultProvider getUrlBasedScoreCorrectionProvider(String resultProviderName) {
|
||||
UrlResultProvider result = null;
|
||||
for (ScoreCorrectionProvider scp : getScoreCorrectionProviders()) {
|
||||
if (scp instanceof WinRegattaResultProvider) {
|
||||
result = (WinRegattaResultProvider) scp;
|
||||
break;
|
||||
if (scp instanceof UrlResultProvider && scp.getName().equals(resultProviderName)) {
|
||||
result = (UrlResultProvider) scp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@@ -2581,21 +2580,11 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
public List<String> getResultImportUrls(String resultProviderName) {
|
||||
List<String> result = new ArrayList<String>();
|
||||
|
||||
if("FREG".equals(resultProviderName)) {
|
||||
FregResultProvider fregService = getFregService();
|
||||
if (fregService != null) {
|
||||
Iterable<URL> allUrls = fregService.getAllUrls();
|
||||
for (URL url : allUrls) {
|
||||
result.add(url.toString());
|
||||
}
|
||||
}
|
||||
} else if("WinRegatta".equals(resultProviderName)) {
|
||||
WinRegattaResultProvider winRegattaService = getWinRegattaService();
|
||||
if (winRegattaService != null) {
|
||||
Iterable<URL> allUrls = winRegattaService.getAllUrls();
|
||||
for (URL url : allUrls) {
|
||||
result.add(url.toString());
|
||||
}
|
||||
UrlResultProvider urlBasedScoreCorrectionProvider = getUrlBasedScoreCorrectionProvider(resultProviderName);
|
||||
if (urlBasedScoreCorrectionProvider != null) {
|
||||
Iterable<URL> allUrls = urlBasedScoreCorrectionProvider.getAllUrls();
|
||||
for (URL url : allUrls) {
|
||||
result.add(url.toString());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@@ -2603,35 +2592,19 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
|
||||
@Override
|
||||
public void removeResultImportURLs(String resultProviderName, Set<String> toRemove) throws Exception {
|
||||
if("FREG".equals(resultProviderName)) {
|
||||
FregResultProvider fregService = getFregService();
|
||||
if (fregService != null) {
|
||||
for (String urlToRemove : toRemove) {
|
||||
fregService.removeResultUrl(new URL(urlToRemove));
|
||||
}
|
||||
UrlResultProvider urlBasedScoreCorrectionProvider = getUrlBasedScoreCorrectionProvider(resultProviderName);
|
||||
if (urlBasedScoreCorrectionProvider != null) {
|
||||
for (String urlToRemove : toRemove) {
|
||||
urlBasedScoreCorrectionProvider.removeResultUrl(new URL(urlToRemove));
|
||||
}
|
||||
} else if("WinRegatta".equals(resultProviderName)) {
|
||||
WinRegattaResultProvider winRegattaService = getWinRegattaService();
|
||||
if (winRegattaService != null) {
|
||||
for (String urlToRemove : toRemove) {
|
||||
winRegattaService.removeResultUrl(new URL(urlToRemove));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addResultImportUrl(String resultProviderName, String url) throws Exception {
|
||||
if("FREG".equals(resultProviderName)) {
|
||||
FregResultProvider fregService = getFregService();
|
||||
if (fregService != null) {
|
||||
fregService.registerResultUrl(new URL(url));
|
||||
}
|
||||
} else if("WinRegatta".equals(resultProviderName)) {
|
||||
WinRegattaResultProvider winRegattaService = getWinRegattaService();
|
||||
if (winRegattaService != null) {
|
||||
winRegattaService.registerResultUrl(new URL(url));
|
||||
}
|
||||
}
|
||||
UrlResultProvider urlBasedScoreCorrectionProvider = getUrlBasedScoreCorrectionProvider(resultProviderName);
|
||||
if (urlBasedScoreCorrectionProvider != null) {
|
||||
urlBasedScoreCorrectionProvider.registerResultUrl(new URL(url));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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.7"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
@@ -0,0 +1 @@
|
||||
bin/
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.sap.sailing.resultimport</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.7
|
||||
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.7
|
||||
@@ -0,0 +1,3 @@
|
||||
eclipse.preferences.version=1
|
||||
pluginProject.extensions=false
|
||||
resolve.requirebundle=false
|
||||
@@ -0,0 +1,10 @@
|
||||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Shared result import APIs
|
||||
Bundle-SymbolicName: com.sap.sailing.resultimport
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: SAP
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Export-Package: com.sap.sailing.resultimport,
|
||||
com.sap.sailing.resultimport.impl
|
||||
@@ -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.resultimport</artifactId>
|
||||
<packaging>eclipse-plugin</packaging>
|
||||
</project>
|
||||
+1
-3
@@ -1,7 +1,6 @@
|
||||
package com.sap.sailing.winregatta.resultimport;
|
||||
package com.sap.sailing.resultimport;
|
||||
|
||||
public interface CompetitorEntry {
|
||||
|
||||
boolean isDiscarded();
|
||||
|
||||
Double getScore();
|
||||
@@ -9,5 +8,4 @@ public interface CompetitorEntry {
|
||||
String getMaxPointsReason();
|
||||
|
||||
Integer getRank();
|
||||
|
||||
}
|
||||
Executable → Regular
+20
-25
@@ -1,25 +1,20 @@
|
||||
package com.sap.sailing.freg.resultimport;
|
||||
|
||||
|
||||
public interface CompetitorRow {
|
||||
|
||||
Iterable<CompetitorEntry> getRankAndMaxPointsReasonAndPointsAndDiscarded();
|
||||
|
||||
Double getTotalPointsBeforeDiscarding();
|
||||
|
||||
Double getScoreAfterDiscarding();
|
||||
|
||||
Iterable<String> getNames();
|
||||
|
||||
/**
|
||||
* Concatenates the {@link #getNames() names} with a "+"
|
||||
*/
|
||||
String getTeamName();
|
||||
|
||||
String getSailID();
|
||||
|
||||
Integer getTotalRank();
|
||||
|
||||
String getClubName();
|
||||
|
||||
}
|
||||
package com.sap.sailing.resultimport;
|
||||
|
||||
|
||||
public interface CompetitorRow {
|
||||
Iterable<CompetitorEntry> getRankAndMaxPointsReasonAndPointsAndDiscarded();
|
||||
|
||||
Double getTotalPointsBeforeDiscarding();
|
||||
|
||||
Double getScoreAfterDiscarding();
|
||||
|
||||
Iterable<String> getNames();
|
||||
|
||||
String getTeamName();
|
||||
|
||||
String getSailID();
|
||||
|
||||
Integer getTotalRank();
|
||||
|
||||
String getClubName();
|
||||
}
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.winregatta.resultimport;
|
||||
package com.sap.sailing.resultimport;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -9,5 +9,5 @@ public interface RegattaResults {
|
||||
*/
|
||||
Map<String, String> getMetadata();
|
||||
|
||||
List<CompetitorResult> getCompetitorResults();
|
||||
List<CompetitorRow> getCompetitorResults();
|
||||
}
|
||||
+9
-9
@@ -1,9 +1,9 @@
|
||||
package com.sap.sailing.freg.resultimport;
|
||||
|
||||
import java.net.URL;
|
||||
|
||||
public interface FregResultProvider {
|
||||
void registerResultUrl(URL url);
|
||||
void removeResultUrl(URL url);
|
||||
Iterable<URL> getAllUrls();
|
||||
}
|
||||
package com.sap.sailing.resultimport;
|
||||
|
||||
import java.net.URL;
|
||||
|
||||
public interface UrlResultProvider {
|
||||
void registerResultUrl(URL url);
|
||||
void removeResultUrl(URL url);
|
||||
Iterable<URL> getAllUrls();
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
package com.sap.sailing.resultimport.impl;
|
||||
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
|
||||
public class DefaultCompetitorEntryImpl implements CompetitorEntry {
|
||||
private final Integer rank;
|
||||
private final String maxPointsReason;
|
||||
private final Double score;
|
||||
private final boolean discarded;
|
||||
|
||||
public DefaultCompetitorEntryImpl(Integer rank, String maxPointsReason, Double score, boolean discarded) {
|
||||
super();
|
||||
this.rank = rank;
|
||||
this.maxPointsReason = maxPointsReason;
|
||||
this.score = score;
|
||||
this.discarded = discarded;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getRank() {
|
||||
return rank;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMaxPointsReason() {
|
||||
return maxPointsReason;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Double getScore() {
|
||||
return score;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDiscarded() {
|
||||
return discarded;
|
||||
}
|
||||
}
|
||||
@@ -24,5 +24,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@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.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.resultimport@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
|
||||
@@ -25,6 +25,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@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.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.resultimport@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@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>
|
||||
|
||||
@@ -24,5 +24,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@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.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.resultimport@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
|
||||
@@ -25,6 +25,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@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.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.resultimport@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@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>
|
||||
|
||||
@@ -25,6 +25,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@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.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.resultimport@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@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>
|
||||
|
||||
@@ -25,5 +25,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="true"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@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.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.resultimport@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
|
||||
+1
-1
@@ -24,5 +24,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@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.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,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@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.resultimport@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.winregatta.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
|
||||
@@ -10,4 +10,5 @@ Bundle-ActivationPolicy: lazy
|
||||
Require-Bundle: org.junit4;bundle-version="4.8.2",
|
||||
com.sap.sailing.winregatta.resultimport,
|
||||
com.sap.sailing.domain.common,
|
||||
com.sap.sailing.domain
|
||||
com.sap.sailing.domain,
|
||||
com.sap.sailing.resultimport
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ import java.util.Map;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.winregatta.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
import com.sap.sailing.winregatta.resultimport.impl.CompetitorResultsXlsImporter;
|
||||
|
||||
public class XlsImportTest {
|
||||
|
||||
@@ -6,11 +6,15 @@ Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Activator: com.sap.sailing.winregatta.resultimport.impl.Activator
|
||||
Bundle-Vendor: SAP
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Import-Package: org.osgi.framework
|
||||
Import-Package: javax.xml.parsers,
|
||||
org.osgi.framework,
|
||||
org.xml.sax
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Require-Bundle: com.sap.sailing.server,
|
||||
com.sap.sailing.domain.common,
|
||||
com.sap.sailing.domain
|
||||
com.sap.sailing.domain,
|
||||
jcl.over.slf4j;bundle-version="1.6.4",
|
||||
com.sap.sailing.resultimport
|
||||
Bundle-ClassPath: lib/com.springsource.org.apache.commons.beanutils-1.8.0.jar,
|
||||
lib/com.springsource.org.apache.commons.collections-3.2.1.jar,
|
||||
lib/com.springsource.org.apache.commons.digester-1.8.0.jar,
|
||||
@@ -22,5 +26,4 @@ Bundle-ClassPath: lib/com.springsource.org.apache.commons.beanutils-1.8.0.jar,
|
||||
lib/xml-apis-1.0.b2.jar,
|
||||
lib/xmlbeans-2.4.0.jar,
|
||||
lib/dom4j-1.6.1.jar
|
||||
Export-Package: com.sap.sailing.winregatta.resultimport,
|
||||
com.sap.sailing.winregatta.resultimport.impl;x-friends:="com.sap.sailing.winregatta.resultimport.test"
|
||||
Export-Package: com.sap.sailing.winregatta.resultimport.impl;x-friends:="com.sap.sailing.winregatta.resultimport.test"
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
<section startRow="12" endRow="12">
|
||||
<mapping row="12" col="0">competitor.totalRank</mapping>
|
||||
<mapping row="12" col="1">competitor.country</mapping>
|
||||
<mapping row="12" col="2">competitor.sailID</mapping>
|
||||
<mapping row="12" col="2">competitor.sailNumber</mapping>
|
||||
<mapping row="12" col="3">competitor.teamMember1Name</mapping>
|
||||
<mapping row="12" col="4">competitor.teamMember1Club</mapping>
|
||||
<mapping row="12" col="5">competitor.teamMember1DSVNumber</mapping>
|
||||
|
||||
-25
@@ -1,25 +0,0 @@
|
||||
package com.sap.sailing.winregatta.resultimport;
|
||||
|
||||
|
||||
public interface CompetitorResult {
|
||||
|
||||
Iterable<CompetitorEntry> getRankAndMaxPointsReasonAndPointsAndDiscarded();
|
||||
|
||||
Double getTotalPointsBeforeDiscarding();
|
||||
|
||||
Double getScoreAfterDiscarding();
|
||||
|
||||
Iterable<String> getNames();
|
||||
|
||||
/**
|
||||
* Concatenates the {@link #getNames() names} with a "+"
|
||||
*/
|
||||
String getTeamName();
|
||||
|
||||
String getSailID();
|
||||
|
||||
Integer getTotalRank();
|
||||
|
||||
String getClubName();
|
||||
|
||||
}
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
package com.sap.sailing.winregatta.resultimport;
|
||||
|
||||
import java.net.URL;
|
||||
|
||||
public interface WinRegattaResultProvider {
|
||||
void registerResultUrl(URL url);
|
||||
void removeResultUrl(URL url);
|
||||
Iterable<URL> getAllUrls();
|
||||
}
|
||||
+29
-42
@@ -1,15 +1,16 @@
|
||||
package com.sap.sailing.winregatta.resultimport.impl;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.winregatta.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.winregatta.resultimport.CompetitorResult;
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
|
||||
public class CompetitorResultImpl implements CompetitorResult
|
||||
public class CompetitorResultImpl implements CompetitorRow
|
||||
{
|
||||
private Integer totalRank;
|
||||
private String country;
|
||||
private String sailID;
|
||||
private String sailNumber;
|
||||
private String teamMember1Name;
|
||||
private String teamMember1Club;
|
||||
private String teamMember1DSVNumber;
|
||||
@@ -29,7 +30,7 @@ public class CompetitorResultImpl implements CompetitorResult
|
||||
}
|
||||
|
||||
public Object getResultKey() {
|
||||
return sailID;
|
||||
return sailNumber;
|
||||
}
|
||||
|
||||
public Integer getTotalRank() {
|
||||
@@ -48,12 +49,12 @@ public class CompetitorResultImpl implements CompetitorResult
|
||||
this.country = country;
|
||||
}
|
||||
|
||||
public String getSailID() {
|
||||
return sailID;
|
||||
public String getSailNumber() {
|
||||
return sailNumber;
|
||||
}
|
||||
|
||||
public void setSailID(String sailID) {
|
||||
this.sailID = sailID;
|
||||
public void setSailNumber(String sailNumber) {
|
||||
this.sailNumber = sailNumber;
|
||||
}
|
||||
|
||||
public String getTeamMember1Name() {
|
||||
@@ -168,32 +169,6 @@ public class CompetitorResultImpl implements CompetitorResult
|
||||
this.totalScore = totalScore;
|
||||
}
|
||||
|
||||
private class ExcelDateFormatter {
|
||||
String valueAsString;
|
||||
Date valueAsDate;
|
||||
|
||||
public ExcelDateFormatter(String importedDate) {
|
||||
if (importedDate != null && !importedDate.isEmpty()) {
|
||||
// the format is in excel time format (number between 0 and 1)
|
||||
try {
|
||||
Double value = Double.parseDouble(importedDate) * 86400;
|
||||
Long valueInSeconds = value.longValue();
|
||||
|
||||
this.valueAsDate = new Date(valueInSeconds * 1000);
|
||||
this.valueAsString = String
|
||||
.format("%02d:%02d:%02d", valueInSeconds / 3600,
|
||||
(valueInSeconds % 3600) / 60,
|
||||
(valueInSeconds % 60));
|
||||
} catch (NumberFormatException e) {
|
||||
this.valueAsString = "Invalid format: " + importedDate;
|
||||
}
|
||||
} else {
|
||||
valueAsString = importedDate;
|
||||
valueAsDate = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<CompetitorEntry> getRankAndMaxPointsReasonAndPointsAndDiscarded() {
|
||||
// TODO Auto-generated method stub
|
||||
@@ -214,19 +189,31 @@ public class CompetitorResultImpl implements CompetitorResult
|
||||
|
||||
@Override
|
||||
public Iterable<String> getNames() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
List<String> names = new ArrayList<String>();
|
||||
if(teamMember1Name != null) {
|
||||
names.add(teamMember1Name);
|
||||
}
|
||||
if(teamMember2Name != null) {
|
||||
names.add(teamMember2Name);
|
||||
}
|
||||
if(teamMember3Name != null) {
|
||||
names.add(teamMember3Name);
|
||||
}
|
||||
return names;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTeamName() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSailID() {
|
||||
return country.trim() + sailNumber.trim();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClubName() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -16,8 +16,8 @@ import net.sf.jxls.reader.ReaderConfig;
|
||||
import net.sf.jxls.reader.XLSReadStatus;
|
||||
import net.sf.jxls.reader.XLSReader;
|
||||
|
||||
import com.sap.sailing.winregatta.resultimport.CompetitorResult;
|
||||
import com.sap.sailing.winregatta.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
|
||||
public class CompetitorResultsXlsImporter {
|
||||
private static String jxlsImportTemplatePath = "/exceltemplates/DrachenIDM-2012/resultlistImport.xml";
|
||||
@@ -33,7 +33,7 @@ public class CompetitorResultsXlsImporter {
|
||||
throw new IllegalStateException(String.format("Can not read classpath resource '%s'",
|
||||
jxlsImportTemplatePath));
|
||||
|
||||
final List<CompetitorResult> results = new ArrayList<CompetitorResult>();
|
||||
final List<CompetitorRow> results = new ArrayList<CompetitorRow>();
|
||||
final RegattaInfo regattaInfo = new RegattaInfo();
|
||||
HashMap<String, Object> beans = new HashMap<String, Object>();
|
||||
beans.put("competitors", results);
|
||||
@@ -48,7 +48,7 @@ public class CompetitorResultsXlsImporter {
|
||||
return regattaInfo.toMap();
|
||||
}
|
||||
@Override
|
||||
public List<CompetitorResult> getCompetitorResults() {
|
||||
public List<CompetitorRow> getCompetitorResults() {
|
||||
return results;
|
||||
}
|
||||
};
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package com.sap.sailing.winregatta.resultimport.impl;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
public class ExcelDateFormatterUtil {
|
||||
String valueAsString;
|
||||
Date valueAsDate;
|
||||
|
||||
public ExcelDateFormatterUtil(String importedDate) {
|
||||
if (importedDate != null && !importedDate.isEmpty()) {
|
||||
// the format is in excel time format (number between 0 and 1)
|
||||
try {
|
||||
Double value = Double.parseDouble(importedDate) * 86400;
|
||||
Long valueInSeconds = value.longValue();
|
||||
|
||||
this.valueAsDate = new Date(valueInSeconds * 1000);
|
||||
this.valueAsString = String
|
||||
.format("%02d:%02d:%02d", valueInSeconds / 3600,
|
||||
(valueInSeconds % 3600) / 60,
|
||||
(valueInSeconds % 60));
|
||||
} catch (NumberFormatException e) {
|
||||
this.valueAsString = "Invalid format: " + importedDate;
|
||||
}
|
||||
} else {
|
||||
valueAsString = importedDate;
|
||||
valueAsDate = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -6,8 +6,8 @@ import java.util.List;
|
||||
import com.sap.sailing.domain.common.RegattaScoreCorrections;
|
||||
import com.sap.sailing.domain.common.ScoreCorrectionProvider;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.winregatta.resultimport.CompetitorResult;
|
||||
import com.sap.sailing.winregatta.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
|
||||
public class RegattaScoreCorrectionsImpl implements RegattaScoreCorrections {
|
||||
private final ScoreCorrectionProviderImpl provider;
|
||||
@@ -26,7 +26,7 @@ public class RegattaScoreCorrectionsImpl implements RegattaScoreCorrections {
|
||||
|
||||
private int getMaxListSize(RegattaResults regattaResult) {
|
||||
int result = 0;
|
||||
for (CompetitorResult competitorResult : regattaResult.getCompetitorResults()) {
|
||||
for (CompetitorRow competitorResult : regattaResult.getCompetitorResults()) {
|
||||
result = Math.max(result, Util.size(competitorResult.getRankAndMaxPointsReasonAndPointsAndDiscarded()));
|
||||
}
|
||||
return result;
|
||||
@@ -39,7 +39,7 @@ public class RegattaScoreCorrectionsImpl implements RegattaScoreCorrections {
|
||||
|
||||
@Override
|
||||
public String getRegattaName() {
|
||||
return "Extreme Sailing Series";
|
||||
return "???";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-4
@@ -4,7 +4,7 @@ import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.common.MaxPointsReason;
|
||||
import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionForCompetitorInRace;
|
||||
import com.sap.sailing.winregatta.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
|
||||
public class ScoreCorrectionForCompetitorInRaceImpl implements ScoreCorrectionForCompetitorInRace {
|
||||
private static final Logger logger = Logger.getLogger(ScoreCorrectionForCompetitorInRaceImpl.class.getName());
|
||||
@@ -59,9 +59,6 @@ public class ScoreCorrectionForCompetitorInRaceImpl implements ScoreCorrectionFo
|
||||
return maxPointsReason;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return <code>false</code> because ESS doesn't have discards
|
||||
*/
|
||||
@Override
|
||||
public Boolean isDiscarded() {
|
||||
return discarded;
|
||||
|
||||
+10
-10
@@ -7,22 +7,22 @@ import java.util.Set;
|
||||
import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionForCompetitorInRace;
|
||||
import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionsForRace;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.winregatta.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.winregatta.resultimport.CompetitorResult;
|
||||
import com.sap.sailing.winregatta.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
|
||||
public class ScoreCorrectionForRaceImpl implements ScoreCorrectionsForRace {
|
||||
private final int raceNumberStartingWithOne;
|
||||
private final int raceNumber;
|
||||
private final Map<String, ScoreCorrectionForCompetitorInRace> scoreCorrectionsBySailID;
|
||||
|
||||
public ScoreCorrectionForRaceImpl(RegattaResults regattaResult, int raceNumberStartingWithZero) {
|
||||
this.raceNumberStartingWithOne = raceNumberStartingWithZero+1;
|
||||
public ScoreCorrectionForRaceImpl(RegattaResults regattaResult, int raceNumber) {
|
||||
this.raceNumber = raceNumber;
|
||||
this.scoreCorrectionsBySailID = new HashMap<String, ScoreCorrectionForCompetitorInRace>();
|
||||
for (CompetitorResult competitorResult : regattaResult.getCompetitorResults()) {
|
||||
for (CompetitorRow competitorResult : regattaResult.getCompetitorResults()) {
|
||||
String teamName = competitorResult.getTeamName();
|
||||
CompetitorEntry competitorEntry;
|
||||
if (raceNumberStartingWithZero < Util.size(competitorResult.getRankAndMaxPointsReasonAndPointsAndDiscarded())) {
|
||||
competitorEntry = Util.get(competitorResult.getRankAndMaxPointsReasonAndPointsAndDiscarded(), raceNumberStartingWithZero);
|
||||
if (raceNumber < Util.size(competitorResult.getRankAndMaxPointsReasonAndPointsAndDiscarded())) {
|
||||
competitorEntry = Util.get(competitorResult.getRankAndMaxPointsReasonAndPointsAndDiscarded(), raceNumber);
|
||||
} else {
|
||||
competitorEntry = null;
|
||||
}
|
||||
@@ -33,7 +33,7 @@ public class ScoreCorrectionForRaceImpl implements ScoreCorrectionsForRace {
|
||||
|
||||
@Override
|
||||
public String getRaceNameOrNumber() {
|
||||
return ""+raceNumberStartingWithOne;
|
||||
return ""+raceNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+4
-6
@@ -1,6 +1,5 @@
|
||||
package com.sap.sailing.winregatta.resultimport.impl;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
@@ -8,7 +7,6 @@ import java.net.URLConnection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -17,13 +15,13 @@ import com.sap.sailing.domain.common.RegattaScoreCorrections;
|
||||
import com.sap.sailing.domain.common.ScoreCorrectionProvider;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.winregatta.resultimport.RegattaResults;
|
||||
import com.sap.sailing.winregatta.resultimport.WinRegattaResultProvider;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.UrlResultProvider;
|
||||
|
||||
public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, WinRegattaResultProvider {
|
||||
public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, UrlResultProvider {
|
||||
private static final long serialVersionUID = -52564333737320563L;
|
||||
|
||||
private static final String name = "Results from 'WinRegatta Plus'";
|
||||
private static final String name = "'WinRegatta Plus' XLS Score Importer";
|
||||
|
||||
private final Set<URL> allUrls;
|
||||
|
||||
|
||||
@@ -53,12 +53,15 @@
|
||||
<module>com.sap.sailing.feature.runtime</module>
|
||||
<module>com.sap.sailing.feature.p2build</module>
|
||||
<module>org.moxieapps.gwt.highcharts</module>
|
||||
<module>com.sap.sailing.resultimport</module>
|
||||
<module>com.sap.sailing.kiworesultimport</module>
|
||||
<module>com.sap.sailing.kiworesultimport.test</module>
|
||||
<module>com.sap.sailing.ess40.resultimport</module>
|
||||
<module>com.sap.sailing.ess40.resultimport.test</module>
|
||||
<module>com.sap.sailing.freg.resultimport</module>
|
||||
<module>com.sap.sailing.freg.resultimport.test</module>
|
||||
<module>com.sap.sailing.winregatta.resultimport</module>
|
||||
<module>com.sap.sailing.winregatta.resultimport.test</module>
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
|
||||
Reference in New Issue
Block a user