mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-08 03:52:18 +00:00
moved more of the default score correction implementation to the resultimport bundle to re-use between FREG and other importers
This commit is contained in:
1 parent
5f75cb9464
commit
9b0ff70e90
15 files changed
+25
-239
No files matched your search
@@ -7,6 +7,7 @@ Bundle-Activator: com.sap.sailing.freg.resultimport.impl.Activator
|
||||
Bundle-Vendor: SAP
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Import-Package: com.sap.sailing.resultimport,
|
||||
com.sap.sailing.resultimport.impl,
|
||||
org.osgi.framework;version="1.3.0"
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Require-Bundle: com.sap.sailing.domain.common,
|
||||
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
package com.sap.sailing.freg.resultimport.impl;
|
||||
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
|
||||
public class CompetitorEntryImpl implements CompetitorEntry {
|
||||
private final Integer rank;
|
||||
private final String maxPointsReason;
|
||||
private final Double score;
|
||||
private final boolean discarded;
|
||||
|
||||
public CompetitorEntryImpl(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;
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -15,6 +15,8 @@ import java.util.regex.Pattern;
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.impl.CompetitorRowImpl;
|
||||
import com.sap.sailing.resultimport.impl.DefaultCompetitorEntryImpl;
|
||||
|
||||
public class FregHtmlParser {
|
||||
private static final Logger logger = Logger.getLogger(FregHtmlParser.class.getName());
|
||||
@@ -150,10 +152,8 @@ public class FregHtmlParser {
|
||||
getRankAndMaxPointsReasonAndPointsAndDiscardedForOnceRace(tdContent.get(i).trim());
|
||||
rankAndMaxPointsReasonAndPointsAndDiscarded.add(rankAndMaxPointsReasonAndPointsAndDiscardedForOnceRace);
|
||||
}
|
||||
String[] clubNameAndCountry = getTagContents(tdContent.get(tdContent.size()-1).trim(), "p").get(0).trim().split("<(br|BR)>");
|
||||
String clubName = clubNameAndCountry[0].replace(" ", " ").trim();
|
||||
return new CompetitorRowImpl(totalRank, sailID, names, scoreAfterDiscarding, totalPointsBeforeDiscarding,
|
||||
rankAndMaxPointsReasonAndPointsAndDiscarded, clubName);
|
||||
rankAndMaxPointsReasonAndPointsAndDiscarded);
|
||||
}
|
||||
|
||||
private CompetitorEntry getRankAndMaxPointsReasonAndPointsAndDiscardedForOnceRace(
|
||||
@@ -190,7 +190,7 @@ public class FregHtmlParser {
|
||||
}
|
||||
}
|
||||
Double points = lines.length < 2 ? null : Double.valueOf(getTagContents(lines[1], "i").get(0));
|
||||
return new CompetitorEntryImpl(rank, maxPointsReason, points, isDiscarded);
|
||||
return new DefaultCompetitorEntryImpl(rank, maxPointsReason, points, isDiscarded);
|
||||
}
|
||||
|
||||
private Double getScore(String cell) {
|
||||
|
||||
+1
@@ -18,6 +18,7 @@ import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.resultimport.UrlResultProvider;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.impl.RegattaScoreCorrectionsImpl;
|
||||
|
||||
public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, UrlResultProvider {
|
||||
private static final long serialVersionUID = 5853404150107387702L;
|
||||
|
||||
@@ -8,3 +8,5 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Export-Package: com.sap.sailing.resultimport,
|
||||
com.sap.sailing.resultimport.impl
|
||||
Import-Package: com.sap.sailing.domain.common,
|
||||
com.sap.sailing.domain.common.impl
|
||||
+1
-3
@@ -10,11 +10,9 @@ public interface CompetitorRow {
|
||||
|
||||
Iterable<String> getNames();
|
||||
|
||||
String getTeamName();
|
||||
String getCompetitorName();
|
||||
|
||||
String getSailID();
|
||||
|
||||
Integer getTotalRank();
|
||||
|
||||
String getClubName();
|
||||
}
|
||||
+3
-10
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.freg.resultimport.impl;
|
||||
package com.sap.sailing.resultimport.impl;
|
||||
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
@@ -10,10 +10,9 @@ public class CompetitorRowImpl implements CompetitorRow {
|
||||
private final Double scoreAfterDiscarding;
|
||||
private final Double totalPointsBeforeDiscarding;
|
||||
private final Iterable<CompetitorEntry> rankAndMaxPointsReasonAndPointsAndDiscarded;
|
||||
private final String clubName;
|
||||
|
||||
public CompetitorRowImpl(Integer totalRank, String sailID, Iterable<String> names, Double scoreAfterDiscarding,
|
||||
Double totalPointsBeforeDiscarding, Iterable<CompetitorEntry> rankAndMaxPointsReasonAndPointsAndDiscarded, String clubName) {
|
||||
Double totalPointsBeforeDiscarding, Iterable<CompetitorEntry> rankAndMaxPointsReasonAndPointsAndDiscarded) {
|
||||
super();
|
||||
this.totalRank = totalRank;
|
||||
this.sailID = sailID;
|
||||
@@ -21,7 +20,6 @@ public class CompetitorRowImpl implements CompetitorRow {
|
||||
this.scoreAfterDiscarding = scoreAfterDiscarding;
|
||||
this.totalPointsBeforeDiscarding = totalPointsBeforeDiscarding;
|
||||
this.rankAndMaxPointsReasonAndPointsAndDiscarded = rankAndMaxPointsReasonAndPointsAndDiscarded;
|
||||
this.clubName = clubName;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -55,12 +53,7 @@ public class CompetitorRowImpl implements CompetitorRow {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClubName() {
|
||||
return clubName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTeamName() {
|
||||
public String getCompetitorName() {
|
||||
StringBuilder result = new StringBuilder();
|
||||
boolean first = true;
|
||||
for (String name : getNames()) {
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.freg.resultimport.impl;
|
||||
package com.sap.sailing.resultimport.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -10,10 +10,10 @@ import com.sap.sailing.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
|
||||
public class RegattaScoreCorrectionsImpl implements RegattaScoreCorrections {
|
||||
private final ScoreCorrectionProviderImpl provider;
|
||||
private final ScoreCorrectionProvider provider;
|
||||
private final Iterable<ScoreCorrectionsForRace> scoreCorrectionsForRaces;
|
||||
|
||||
public RegattaScoreCorrectionsImpl(ScoreCorrectionProviderImpl scoreCorrectionProviderImpl,
|
||||
public RegattaScoreCorrectionsImpl(ScoreCorrectionProvider scoreCorrectionProviderImpl,
|
||||
RegattaResults regattaResult) {
|
||||
this.provider = scoreCorrectionProviderImpl;
|
||||
List<ScoreCorrectionsForRace> scfr = new ArrayList<ScoreCorrectionsForRace>();
|
||||
+5
-5
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.freg.resultimport.impl;
|
||||
package com.sap.sailing.resultimport.impl;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@@ -9,15 +9,15 @@ import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
public class ScoreCorrectionForCompetitorInRaceImpl implements ScoreCorrectionForCompetitorInRace {
|
||||
private static final Logger logger = Logger.getLogger(ScoreCorrectionForCompetitorInRaceImpl.class.getName());
|
||||
|
||||
private final String teamName;
|
||||
private final String competitorName;
|
||||
private final String sailID;
|
||||
private final int points;
|
||||
private final MaxPointsReason maxPointsReason;
|
||||
private final boolean discarded;
|
||||
|
||||
public ScoreCorrectionForCompetitorInRaceImpl(String sailID, String teamName, CompetitorEntry competitorEntry) {
|
||||
public ScoreCorrectionForCompetitorInRaceImpl(String sailID, String competitorName, CompetitorEntry competitorEntry) {
|
||||
this.sailID = sailID;
|
||||
this.teamName = teamName;
|
||||
this.competitorName = competitorName;
|
||||
if (competitorEntry == null) {
|
||||
points = 0;
|
||||
maxPointsReason = null;
|
||||
@@ -46,7 +46,7 @@ public class ScoreCorrectionForCompetitorInRaceImpl implements ScoreCorrectionFo
|
||||
|
||||
@Override
|
||||
public String getCompetitorName() {
|
||||
return teamName;
|
||||
return competitorName;
|
||||
}
|
||||
|
||||
@Override
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.freg.resultimport.impl;
|
||||
package com.sap.sailing.resultimport.impl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -19,7 +19,7 @@ public class ScoreCorrectionForRaceImpl implements ScoreCorrectionsForRace {
|
||||
this.raceNumberStartingWithOne = raceNumberStartingWithZero+1;
|
||||
this.scoreCorrectionsBySailID = new HashMap<String, ScoreCorrectionForCompetitorInRace>();
|
||||
for (CompetitorRow competitorRow : regattaResult.getCompetitorResults()) {
|
||||
String teamName = competitorRow.getTeamName();
|
||||
String competitorName = competitorRow.getCompetitorName();
|
||||
CompetitorEntry competitorEntry;
|
||||
if (raceNumberStartingWithZero < Util.size(competitorRow.getRankAndMaxPointsReasonAndPointsAndDiscarded())) {
|
||||
competitorEntry = Util.get(competitorRow.getRankAndMaxPointsReasonAndPointsAndDiscarded(), raceNumberStartingWithZero);
|
||||
@@ -27,7 +27,7 @@ public class ScoreCorrectionForRaceImpl implements ScoreCorrectionsForRace {
|
||||
competitorEntry = null;
|
||||
}
|
||||
scoreCorrectionsBySailID.put(competitorRow.getSailID(),
|
||||
new ScoreCorrectionForCompetitorInRaceImpl(competitorRow.getSailID(), teamName, competitorEntry));
|
||||
new ScoreCorrectionForCompetitorInRaceImpl(competitorRow.getSailID(), competitorName, competitorEntry));
|
||||
}
|
||||
}
|
||||
|
||||
+1
-7
@@ -285,7 +285,7 @@ public class CompetitorRowImpl implements CompetitorRow
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTeamName() {
|
||||
public String getCompetitorName() {
|
||||
return teamMember1Name;
|
||||
}
|
||||
|
||||
@@ -293,10 +293,4 @@ public class CompetitorRowImpl implements CompetitorRow
|
||||
public String getSailID() {
|
||||
return country.trim() + sailNumber.trim();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClubName() {
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
-50
@@ -1,50 +0,0 @@
|
||||
package com.sap.sailing.winregatta.resultimport.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
|
||||
public class RegattaScoreCorrectionsImpl implements RegattaScoreCorrections {
|
||||
private final ScoreCorrectionProviderImpl provider;
|
||||
private final Iterable<ScoreCorrectionsForRace> scoreCorrectionsForRaces;
|
||||
|
||||
public RegattaScoreCorrectionsImpl(ScoreCorrectionProviderImpl scoreCorrectionProviderImpl,
|
||||
RegattaResults regattaResult) {
|
||||
this.provider = scoreCorrectionProviderImpl;
|
||||
List<ScoreCorrectionsForRace> scfr = new ArrayList<ScoreCorrectionsForRace>();
|
||||
int maxSize = getMaxListSize(regattaResult);
|
||||
for (int i=0; i<maxSize; i++) {
|
||||
scfr.add(new ScoreCorrectionForRaceImpl(regattaResult, i));
|
||||
}
|
||||
this.scoreCorrectionsForRaces = scfr;
|
||||
}
|
||||
|
||||
private int getMaxListSize(RegattaResults regattaResult) {
|
||||
int result = 0;
|
||||
for (CompetitorRow competitorResult : regattaResult.getCompetitorResults()) {
|
||||
result = Math.max(result, Util.size(competitorResult.getRankAndMaxPointsReasonAndPointsAndDiscarded()));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScoreCorrectionProvider getProvider() {
|
||||
return provider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRegattaName() {
|
||||
return "???";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ScoreCorrectionsForRace> getScoreCorrectionsForRaces() {
|
||||
return scoreCorrectionsForRaces;
|
||||
}
|
||||
|
||||
}
|
||||
-67
@@ -1,67 +0,0 @@
|
||||
package com.sap.sailing.winregatta.resultimport.impl;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.common.MaxPointsReason;
|
||||
import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionForCompetitorInRace;
|
||||
import com.sap.sailing.resultimport.CompetitorEntry;
|
||||
|
||||
public class ScoreCorrectionForCompetitorInRaceImpl implements ScoreCorrectionForCompetitorInRace {
|
||||
private static final Logger logger = Logger.getLogger(ScoreCorrectionForCompetitorInRaceImpl.class.getName());
|
||||
|
||||
private final String teamName;
|
||||
private final String sailID;
|
||||
private final int points;
|
||||
private final MaxPointsReason maxPointsReason;
|
||||
private final boolean discarded;
|
||||
|
||||
public ScoreCorrectionForCompetitorInRaceImpl(String sailID, String teamName, CompetitorEntry competitorEntry) {
|
||||
this.sailID = sailID;
|
||||
this.teamName = teamName;
|
||||
if (competitorEntry == null) {
|
||||
points = 0;
|
||||
maxPointsReason = null;
|
||||
discarded = false;
|
||||
} else {
|
||||
this.discarded = competitorEntry.isDiscarded();
|
||||
points = (int) (competitorEntry.getScore() == null ? 0 : (double) competitorEntry.getScore());
|
||||
MaxPointsReason mpe = null;
|
||||
if (competitorEntry.getMaxPointsReason() != null && competitorEntry.getMaxPointsReason().length() > 0) {
|
||||
// no int; try parsing a MaxPointsReason
|
||||
try {
|
||||
mpe = MaxPointsReason.valueOf(competitorEntry.getMaxPointsReason());
|
||||
} catch (IllegalArgumentException iae) {
|
||||
logger.info("Don't understand rank "+competitorEntry.getMaxPointsReason());
|
||||
mpe = null;
|
||||
}
|
||||
}
|
||||
maxPointsReason = mpe;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSailID() {
|
||||
return sailID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCompetitorName() {
|
||||
return teamName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Double getPoints() {
|
||||
return (double) points;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MaxPointsReason getMaxPointsReason() {
|
||||
return maxPointsReason;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean isDiscarded() {
|
||||
return discarded;
|
||||
}
|
||||
|
||||
}
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
package com.sap.sailing.winregatta.resultimport.impl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
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.resultimport.CompetitorEntry;
|
||||
import com.sap.sailing.resultimport.CompetitorRow;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
|
||||
public class ScoreCorrectionForRaceImpl implements ScoreCorrectionsForRace {
|
||||
private final int raceNumber;
|
||||
private final Map<String, ScoreCorrectionForCompetitorInRace> scoreCorrectionsBySailID;
|
||||
|
||||
public ScoreCorrectionForRaceImpl(RegattaResults regattaResult, int raceNumber) {
|
||||
this.raceNumber = raceNumber;
|
||||
this.scoreCorrectionsBySailID = new HashMap<String, ScoreCorrectionForCompetitorInRace>();
|
||||
for (CompetitorRow competitorResult : regattaResult.getCompetitorResults()) {
|
||||
String teamName = competitorResult.getTeamName();
|
||||
CompetitorEntry competitorEntry;
|
||||
if (raceNumber < Util.size(competitorResult.getRankAndMaxPointsReasonAndPointsAndDiscarded())) {
|
||||
competitorEntry = Util.get(competitorResult.getRankAndMaxPointsReasonAndPointsAndDiscarded(), raceNumber);
|
||||
} else {
|
||||
competitorEntry = null;
|
||||
}
|
||||
scoreCorrectionsBySailID.put(competitorResult.getSailID(),
|
||||
new ScoreCorrectionForCompetitorInRaceImpl(competitorResult.getSailID(), teamName, competitorEntry));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRaceNameOrNumber() {
|
||||
return ""+raceNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getSailIDs() {
|
||||
return scoreCorrectionsBySailID.keySet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScoreCorrectionForCompetitorInRace getScoreCorrectionForCompetitor(String sailID) {
|
||||
return scoreCorrectionsBySailID.get(sailID);
|
||||
}
|
||||
|
||||
}
|
||||
+1
@@ -17,6 +17,7 @@ import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.resultimport.RegattaResults;
|
||||
import com.sap.sailing.resultimport.UrlResultProvider;
|
||||
import com.sap.sailing.resultimport.impl.RegattaScoreCorrectionsImpl;
|
||||
|
||||
public class ScoreCorrectionProviderImpl implements ScoreCorrectionProvider, UrlResultProvider {
|
||||
private static final long serialVersionUID = -5501186796881875686L;
|
||||
|
||||
Reference in new issue
Block a user