diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/LeaderboardMasterData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/LeaderboardMasterData.java deleted file mode 100644 index 28f7d4ee0d0..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/LeaderboardMasterData.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.sap.sailing.domain.base; - -import java.io.Serializable; -import java.util.List; -import java.util.Map; - -import com.sap.sailing.domain.leaderboard.Leaderboard; -import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; -import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRuleImpl; -import com.sap.sailing.domain.masterdataimport.ScoreCorrectionMasterData; -import com.sap.sailing.domain.racelog.RaceLogEvent; - -public abstract class LeaderboardMasterData { - - private String name; - - private String displayName; - - private int[] resultDiscardingRule; - - private Map competitorsById; - - private ScoreCorrectionMasterData scoreCorrection; - - private Map carriedPoints; - - private List suppressedCompetitors; - - private Map displayNamesByCompetitorId; - - private Map>> raceLogEvents; - - public LeaderboardMasterData(String name, String displayName, int[] resultDiscardingRule, - Map competitorsById, ScoreCorrectionMasterData scoreCorrection, - Map carriedPoints, List suppressedCompetitors, - Map displayNamesByCompetitorId, - Map>> raceLogEvents) { - this.name = name; - this.displayName = displayName; - this.resultDiscardingRule = resultDiscardingRule; - this.competitorsById = competitorsById; - this.scoreCorrection = scoreCorrection; - this.carriedPoints = carriedPoints; - this.suppressedCompetitors = suppressedCompetitors; - this.displayNamesByCompetitorId = displayNamesByCompetitorId; - this.raceLogEvents = raceLogEvents; - } - - public String getName() { - return name; - } - - public String getDisplayName() { - return displayName; - } - - public ThresholdBasedResultDiscardingRule getResultDiscardingRule() { - if (resultDiscardingRule == null) { - return null; - } - ThresholdBasedResultDiscardingRule rule = new ThresholdBasedResultDiscardingRuleImpl(resultDiscardingRule); - return rule; - } - - public Map getCompetitorsById() { - return competitorsById; - } - - public ScoreCorrectionMasterData getScoreCorrection() { - return scoreCorrection; - } - - public Map getCarriedPoints() { - return carriedPoints; - } - - public List getSuppressedCompetitors() { - return suppressedCompetitors; - } - - public Map getDisplayNamesByCompetitorId() { - return displayNamesByCompetitorId; - } - - public Map>> getRaceLogEvents() { - return raceLogEvents; - } - - public abstract Leaderboard getLeaderboard(); - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/EventMasterData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/EventMasterData.java deleted file mode 100644 index c7bff6e406d..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/EventMasterData.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.sap.sailing.domain.masterdataimport; - -import com.sap.sailing.domain.common.impl.Util.Pair; - -public class EventMasterData { - - private String id; - private String name; - private String venueName; - private String pubUrl; - private Iterable> courseAreas; - private boolean isPublic; - - public EventMasterData(String id, String name, String venueName, String pubUrl, Iterable> courseAreas, boolean isPublic) { - this.id = id; - this.name = name; - this.venueName = venueName; - this.pubUrl = pubUrl; - this.courseAreas = courseAreas; - this.isPublic = isPublic; - } - - public String getId() { - return id; - } - - public String getName() { - return name; - } - - public String getVenueName() { - return venueName; - } - - public String getPubUrl() { - return pubUrl; - } - - public Iterable> getCourseAreas() { - return courseAreas; - } - - public boolean isPublic() { - return isPublic; - } - - - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/FlexibleLeaderboardMasterData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/FlexibleLeaderboardMasterData.java deleted file mode 100644 index 63274a80f71..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/FlexibleLeaderboardMasterData.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.sap.sailing.domain.masterdataimport; - -import java.io.Serializable; -import java.util.List; -import java.util.Map; - -import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.CourseArea; -import com.sap.sailing.domain.base.LeaderboardMasterData; -import com.sap.sailing.domain.leaderboard.Leaderboard; -import com.sap.sailing.domain.leaderboard.ScoringScheme; -import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl; -import com.sap.sailing.domain.racelog.RaceLogEvent; - -public class FlexibleLeaderboardMasterData extends LeaderboardMasterData { - - private ScoringScheme scoringScheme; - - private String courseAreaId; - - private CourseArea courseArea; - - private List raceColumns; - - public FlexibleLeaderboardMasterData(String name, String displayName, int[] resultDiscardingRule, - Map competitorsById, ScoreCorrectionMasterData scoreCorrection, - ScoringScheme scoringScheme, String courseAreaId, List raceColumns, - Map carriedPoints, List suppressedCompetitors, - Map displayNamesByCompetitorId, - Map>> raceLogEvents) { - super(name, displayName, resultDiscardingRule, competitorsById, scoreCorrection, carriedPoints, - suppressedCompetitors, displayNamesByCompetitorId, raceLogEvents); - this.scoringScheme = scoringScheme; - this.courseAreaId = courseAreaId; - this.raceColumns = raceColumns; - } - - public ScoringScheme getScoringScheme() { - return scoringScheme; - } - - public String getCourseAreaId() { - return courseAreaId; - } - - public void setCourseArea(CourseArea courseArea) { - this.courseArea = courseArea; - } - - @Override - public Leaderboard getLeaderboard() { - return new FlexibleLeaderboardImpl(getName(), getResultDiscardingRule(), scoringScheme, - courseArea); - } - - public List getRaceColumns() { - return raceColumns; - } - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/LeaderboardGroupMasterData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/LeaderboardGroupMasterData.java deleted file mode 100644 index c71f867d9db..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/LeaderboardGroupMasterData.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.sap.sailing.domain.masterdataimport; - -import java.io.Serializable; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import com.sap.sailing.domain.base.LeaderboardMasterData; -import com.sap.sailing.domain.leaderboard.ScoringScheme; -import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; -import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRuleImpl; - -/** - * Holds leaderboard group object AND its leaderboards, etc - * - * @author d054528 Frederik Petersen - * - */ -public class LeaderboardGroupMasterData { - - private final String name; - private final String description; - private final boolean hasOverallLeaderboard; - private final ScoringScheme overallLeaderboardScoringScheme; - private final int[] overallLeaderboardDiscardingRule; - private final Iterable leaderboards; - private final boolean displayGroupsRevese; - private final Set events; - private final Set regattas; - private final Map metaColumnsWithFactors; - private final List overallLeaderboardSuppressedCompetitorIds; - - public LeaderboardGroupMasterData(String name, String description, boolean displayGroupsRevese, - boolean hasOverallLeaderboard, ScoringScheme overallLeaderboardScoringScheme, - int[] overallLeaderboardDiscardingRule, List overallLeaderboardAuppressedCompetitorIds, - Map metaColumnsWithFactors, Iterable leaderboards, Set events, Set regattas) { - super(); - this.name = name; - this.description = description; - this.hasOverallLeaderboard = hasOverallLeaderboard; - this.overallLeaderboardScoringScheme = overallLeaderboardScoringScheme; - this.overallLeaderboardSuppressedCompetitorIds = overallLeaderboardAuppressedCompetitorIds; - this.overallLeaderboardDiscardingRule = overallLeaderboardDiscardingRule; - this.metaColumnsWithFactors = metaColumnsWithFactors; - this.leaderboards = leaderboards; - this.displayGroupsRevese = displayGroupsRevese; - this.events = events; - this.regattas = regattas; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } - - public boolean hasOverallLeaderboard() { - return hasOverallLeaderboard; - } - - public ScoringScheme getOverallLeaderboardScoringScheme() { - return overallLeaderboardScoringScheme; - } - - public List getOverallLeaderboardSuppressedCompetitorIds() { - return overallLeaderboardSuppressedCompetitorIds; - } - - public ThresholdBasedResultDiscardingRule getOverallLeaderboardDiscardingRule() { - return overallLeaderboardDiscardingRule == null ? new ThresholdBasedResultDiscardingRuleImpl(new int[0]) : - new ThresholdBasedResultDiscardingRuleImpl(overallLeaderboardDiscardingRule); - } - - public Iterable getLeaderboards() { - return leaderboards; - } - - public boolean isDisplayGroupsRevese() { - return displayGroupsRevese; - } - - public Set getEvents() { - return events; - } - - public Set getRegattas() { - return regattas; - } - - public Map getMetaColumnsWithFactors() { - return metaColumnsWithFactors; - } - - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/RaceColumnMasterData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/RaceColumnMasterData.java deleted file mode 100644 index d021f9841ed..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/RaceColumnMasterData.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.sap.sailing.domain.masterdataimport; - -import java.util.Map; -import java.util.Set; - -import com.sap.sailing.domain.common.RaceIdentifier; - -public class RaceColumnMasterData { - private final String name; - private final boolean medal; - private final Map raceIdentifiersByFleetName; - private Double factor; - private Set windTracks; - - public RaceColumnMasterData(String name, boolean medal, Map raceIdentifiersByFleetName, - Double factor, Set windTracks) { - super(); - this.name = name; - this.medal = medal; - this.raceIdentifiersByFleetName = raceIdentifiersByFleetName; - this.factor = factor; - this.windTracks = windTracks; - } - - public String getName() { - return name; - } - - public boolean isMedal() { - return medal; - } - - public Map getRaceIdentifiersByFleetName() { - return raceIdentifiersByFleetName; - } - - public Double getFactor() { - return factor; - } - - public Set getWindTrackMasterData() { - return windTracks; - } - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/RegattaLeaderboardMasterData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/RegattaLeaderboardMasterData.java deleted file mode 100644 index bfaaf3c680e..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/RegattaLeaderboardMasterData.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.sap.sailing.domain.masterdataimport; - -import java.io.Serializable; -import java.util.List; -import java.util.Map; - -import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.LeaderboardMasterData; -import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.common.RegattaIdentifier; -import com.sap.sailing.domain.common.RegattaName; -import com.sap.sailing.domain.leaderboard.Leaderboard; -import com.sap.sailing.domain.leaderboard.impl.RegattaLeaderboardImpl; -import com.sap.sailing.domain.racelog.RaceLogEvent; - -public class RegattaLeaderboardMasterData extends LeaderboardMasterData { - - private String regattaName; - private Regatta regatta; - - public RegattaLeaderboardMasterData(String name, String displayName, int[] resultDiscardingRule, - Map competitorsById, ScoreCorrectionMasterData scoreCorrection, - String regattaName, Map carriedPoints, List suppressedCompetitors, - Map displayNamesByCompetitorId, - Map>> raceLogEvents) { - super(name, displayName, resultDiscardingRule, competitorsById, scoreCorrection, carriedPoints, - suppressedCompetitors, displayNamesByCompetitorId, raceLogEvents); - this.regattaName = regattaName; - } - - public RegattaIdentifier getRegattaName() { - return new RegattaName(regattaName); - } - - public void setRegatta(Regatta regatta) { - this.regatta = regatta; - } - - @Override - public Leaderboard getLeaderboard() { - if (regatta == null) { - return null; - } - return new RegattaLeaderboardImpl(regatta, getResultDiscardingRule()); - } - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/RegattaMasterData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/RegattaMasterData.java deleted file mode 100644 index 50887bc34e7..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/RegattaMasterData.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.sap.sailing.domain.masterdataimport; - -import java.io.Serializable; - -import com.sap.sailing.domain.base.configuration.RegattaConfiguration; -public class RegattaMasterData { - - private Serializable id; - private String baseName; - private String defaultCourseAreaId; - private String boatClassName; - private String scoringSchemeType; - private Iterable series; - private final RegattaConfiguration configuration; - private boolean isPersistent; - private String regattaName; - private Iterable raceIdsAsStrings; - public RegattaMasterData(Serializable id, String baseName, String defaultCourseAreaId, String boatClassName, - String scoringSchemeType, Iterable series, boolean isPersistent, String regattaName, - Iterable raceIdsAsStrings, - RegattaConfiguration configuration) { - this.id = id; - this.baseName = baseName; - this.defaultCourseAreaId = defaultCourseAreaId; - this.boatClassName = boatClassName; - this.scoringSchemeType = scoringSchemeType; - this.series = series; - this.isPersistent = isPersistent; - this.regattaName = regattaName; - this.raceIdsAsStrings = raceIdsAsStrings; - this.configuration = configuration; - } - - public Iterable getRaceIdsAsStrings() { - return raceIdsAsStrings; - } - - public Serializable getId() { - return id; - } - - public String getBaseName() { - return baseName; - } - - public String getDefaultCourseAreaId() { - return defaultCourseAreaId; - } - - public RegattaConfiguration getRegattaConfiguration() { - return configuration; - } - - public String getBoatClassName() { - return boatClassName; - } - - public String getScoringSchemeType() { - return scoringSchemeType; - } - - public Iterable getSeries() { - return series; - } - - public boolean isPersistent() { - return isPersistent; - } - - public String getRegattaName() { - return regattaName; - } - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/ScoreCorrectionMasterData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/ScoreCorrectionMasterData.java deleted file mode 100644 index 9a3ad10770b..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/ScoreCorrectionMasterData.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.sap.sailing.domain.masterdataimport; - -import java.util.Map; - -public class ScoreCorrectionMasterData { - - private String comment; - private Long timepointMillis; - private Map> correctionForRaceColumns; - - public ScoreCorrectionMasterData(String comment, Long timepointMillis, - Map> correctionForRaceColumns) { - this.comment = comment; - this.timepointMillis = timepointMillis; - this.correctionForRaceColumns = correctionForRaceColumns; - } - - public String getComment() { - return comment; - } - - public Long getTimepointMillis() { - return timepointMillis; - } - - public Map> getCorrectionForRaceColumns() { - return correctionForRaceColumns; - } -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/SeriesMasterData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/SeriesMasterData.java deleted file mode 100644 index 13b180f7adc..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/SeriesMasterData.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.sap.sailing.domain.masterdataimport; - -import com.sap.sailing.domain.base.Fleet; - -public class SeriesMasterData { - - private String name; - private boolean isMedal; - private Iterable fleets; - private Iterable raceColumns; - private int[] discardingRule; - - public SeriesMasterData(String name, boolean isMedal, Iterable fleets, Iterable raceColumns, int[] discardingRule) { - this.name = name; - this.isMedal = isMedal; - this.fleets = fleets; - this.raceColumns = raceColumns; - this.discardingRule = discardingRule; - } - - public String getName() { - return name; - } - - public boolean isMedal() { - return isMedal; - } - - public Iterable getFleets() { - return fleets; - } - - public Iterable getRaceColumnNames() { - return raceColumns; - } - - public int[] getDiscardingRule() { - return discardingRule; - } - - -} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/SingleScoreCorrectionMasterData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/SingleScoreCorrectionMasterData.java deleted file mode 100644 index 456eba3f6ad..00000000000 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/SingleScoreCorrectionMasterData.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.sap.sailing.domain.masterdataimport; - -import java.io.Serializable; - -public class SingleScoreCorrectionMasterData { - - private Serializable competitorId; - private Double explicitScoreCorrection; - private String maxPointsReason; - - public SingleScoreCorrectionMasterData(Serializable competitorId, Double explicitScoreCorrection, - String maxPointsReason) { - this.competitorId = competitorId; - this.explicitScoreCorrection = explicitScoreCorrection; - this.maxPointsReason = maxPointsReason; - } - - public Serializable getCompetitorId() { - return competitorId; - } - - public Double getExplicitScoreCorrection() { - return explicitScoreCorrection; - } - - public String getMaxPointsReason() { - return maxPointsReason; - } - -} diff --git a/java/com.sap.sailing.server.gateway.masterdata/src/com/sap/sailing/server/gateway/masterdata/TopLevelMasterData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/TopLevelMasterData.java similarity index 98% rename from java/com.sap.sailing.server.gateway.masterdata/src/com/sap/sailing/server/gateway/masterdata/TopLevelMasterData.java rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/TopLevelMasterData.java index 0c7d9eb7d76..3b4d1c4b0be 100644 --- a/java/com.sap.sailing.server.gateway.masterdata/src/com/sap/sailing/server/gateway/masterdata/TopLevelMasterData.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/masterdataimport/TopLevelMasterData.java @@ -1,4 +1,4 @@ -package com.sap.sailing.server.gateway.masterdata; +package com.sap.sailing.domain.masterdataimport; import java.io.Serializable; import java.util.Collection; @@ -18,7 +18,6 @@ import com.sap.sailing.domain.common.media.MediaTrack; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; -import com.sap.sailing.domain.masterdataimport.WindTrackMasterData; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.WindTrack; diff --git a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF index 78f3fda0cbb..522143acdf8 100755 --- a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF @@ -32,8 +32,7 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sse.gwt;bundle-version="1.0.0" Bundle-Activator: com.sap.sailing.gwt.ui.server.Activator Bundle-ActivationPolicy: lazy -Import-Package: com.sap.sailing.server.gateway.masterdata, - javax.jms;version="1.1.0", +Import-Package: javax.jms;version="1.1.0", javax.servlet;version="2.6.0", javax.servlet.descriptor;version="2.6.0", javax.servlet.http;version="2.6.0", diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index fd5ee326445..9b3725f6470 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -162,6 +162,7 @@ import com.sap.sailing.domain.leaderboard.MetaLeaderboard; import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; import com.sap.sailing.domain.leaderboard.caching.LiveLeaderboardUpdater; +import com.sap.sailing.domain.masterdataimport.TopLevelMasterData; import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.MongoObjectFactory; import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory; @@ -269,7 +270,6 @@ import com.sap.sailing.resultimport.ResultUrlProvider; import com.sap.sailing.resultimport.ResultUrlRegistry; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; -import com.sap.sailing.server.gateway.masterdata.TopLevelMasterData; import com.sap.sailing.server.masterdata.MasterDataImporter; import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; import com.sap.sailing.server.operationaltransformation.AddColumnToSeries; diff --git a/java/com.sap.sailing.server.gateway.masterdata/.classpath b/java/com.sap.sailing.server.gateway.masterdata/.classpath deleted file mode 100644 index 098194ca4b7..00000000000 --- a/java/com.sap.sailing.server.gateway.masterdata/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/java/com.sap.sailing.server.gateway.masterdata/.gitignore b/java/com.sap.sailing.server.gateway.masterdata/.gitignore deleted file mode 100644 index e660fd93d31..00000000000 --- a/java/com.sap.sailing.server.gateway.masterdata/.gitignore +++ /dev/null @@ -1 +0,0 @@ -bin/ diff --git a/java/com.sap.sailing.server.gateway.masterdata/.project b/java/com.sap.sailing.server.gateway.masterdata/.project deleted file mode 100644 index 330f0e8b600..00000000000 --- a/java/com.sap.sailing.server.gateway.masterdata/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - com.sap.sailing.server.gateway.masterdata - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - - diff --git a/java/com.sap.sailing.server.gateway.masterdata/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sailing.server.gateway.masterdata/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index f42de363afa..00000000000 --- a/java/com.sap.sailing.server.gateway.masterdata/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,7 +0,0 @@ -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 diff --git a/java/com.sap.sailing.server.gateway.masterdata/.settings/org.eclipse.pde.core.prefs b/java/com.sap.sailing.server.gateway.masterdata/.settings/org.eclipse.pde.core.prefs deleted file mode 100644 index f29e940a005..00000000000 --- a/java/com.sap.sailing.server.gateway.masterdata/.settings/org.eclipse.pde.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -pluginProject.extensions=false -resolve.requirebundle=false diff --git a/java/com.sap.sailing.server.gateway.masterdata/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.gateway.masterdata/META-INF/MANIFEST.MF deleted file mode 100644 index 6f1812eae86..00000000000 --- a/java/com.sap.sailing.server.gateway.masterdata/META-INF/MANIFEST.MF +++ /dev/null @@ -1,11 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Sailing Server Gateway Master-Data -Bundle-SymbolicName: com.sap.sailing.server.gateway.masterdata -Bundle-Version: 1.0.0.qualifier -Bundle-Vendor: SAP -Bundle-RequiredExecutionEnvironment: JavaSE-1.7 -Require-Bundle: com.sap.sailing.domain, - com.sap.sailing.domain.common -Bundle-ClassPath: . -Export-Package: com.sap.sailing.server.gateway.masterdata diff --git a/java/com.sap.sailing.server.gateway.masterdata/build.properties b/java/com.sap.sailing.server.gateway.masterdata/build.properties deleted file mode 100644 index 34d2e4d2dad..00000000000 --- a/java/com.sap.sailing.server.gateway.masterdata/build.properties +++ /dev/null @@ -1,4 +0,0 @@ -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - . diff --git a/java/com.sap.sailing.server.gateway.masterdata/pom.xml b/java/com.sap.sailing.server.gateway.masterdata/pom.xml deleted file mode 100644 index 1f3bf4618a3..00000000000 --- a/java/com.sap.sailing.server.gateway.masterdata/pom.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - 4.0.0 - - root - com.sap.sailing - 1.0.0-SNAPSHOT - - com.sap.sailing.server.gateway.masterdata - eclipse-plugin - diff --git a/java/com.sap.sailing.server.gateway.serialization/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.gateway.serialization/META-INF/MANIFEST.MF index 047c9c7c056..74da3dfb149 100644 --- a/java/com.sap.sailing.server.gateway.serialization/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.gateway.serialization/META-INF/MANIFEST.MF @@ -12,11 +12,9 @@ Require-Bundle: com.sap.sailing.domain.common;bundle-version="1.0.0", Export-Package: com.sap.sailing.server.gateway.deserialization, com.sap.sailing.server.gateway.deserialization.coursedata.impl, com.sap.sailing.server.gateway.deserialization.impl, - com.sap.sailing.server.gateway.deserialization.masterdata.impl, com.sap.sailing.server.gateway.deserialization.racelog.impl, com.sap.sailing.server.gateway.serialization, com.sap.sailing.server.gateway.serialization.coursedata.impl, com.sap.sailing.server.gateway.serialization.impl, - com.sap.sailing.server.gateway.serialization.masterdata.impl, com.sap.sailing.server.gateway.serialization.racegroup.impl, com.sap.sailing.server.gateway.serialization.racelog.impl diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/CompetitorMasterDataDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/CompetitorMasterDataDeserializer.java deleted file mode 100644 index ee2559bf857..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/CompetitorMasterDataDeserializer.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.sap.sailing.server.gateway.deserialization.masterdata.impl; - -import java.io.Serializable; -import java.lang.reflect.Constructor; -import java.util.UUID; - -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.BoatClass; -import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.SharedDomainFactory; -import com.sap.sailing.domain.base.impl.BoatImpl; -import com.sap.sailing.domain.base.impl.DynamicBoat; -import com.sap.sailing.domain.base.impl.DynamicTeam; -import com.sap.sailing.domain.common.Color; -import com.sap.sailing.domain.common.impl.RGBColor; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.Helpers; -import com.sap.sailing.server.gateway.serialization.masterdata.impl.CompetitorMasterDataJsonSerializer; - -public class CompetitorMasterDataDeserializer implements JsonDeserializer { - - private final JsonDeserializer boatClassDeserializer; - - private final JsonDeserializer teamDeserializer; - - private final SharedDomainFactory domainFactory; - - public CompetitorMasterDataDeserializer(JsonDeserializer boatClassDeserializer, - JsonDeserializer teamDeserializer, SharedDomainFactory domainFactory) { - this.boatClassDeserializer = boatClassDeserializer; - this.teamDeserializer = teamDeserializer; - this.domainFactory = domainFactory; - } - - @Override - public Competitor deserialize(JSONObject object) throws JsonDeserializationException { - String name = (String) object.get(CompetitorMasterDataJsonSerializer.FIELD_NAME); - String rgbDisplayColor = (String) object.get(CompetitorMasterDataJsonSerializer.FIELD_DISPLAY_COLOR); - final Color displayColor; - if (rgbDisplayColor == null || rgbDisplayColor.isEmpty()) { - displayColor = null; - } else { - displayColor = new RGBColor(rgbDisplayColor); - } - Object idClassName = object.get(CompetitorMasterDataJsonSerializer.FIELD_ID_TYPE); - Serializable id = (Serializable) object.get(CompetitorMasterDataJsonSerializer.FIELD_ID); - if (idClassName != null) { - try { - Class idClass = Class.forName((String) idClassName); - if (Number.class.isAssignableFrom(idClass)) { - Constructor constructorFromString = idClass.getConstructor(String.class); - id = (Serializable) constructorFromString.newInstance(id.toString()); - } else if (UUID.class.isAssignableFrom(idClass)) { - id = Helpers.tryUuidConversion(id); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - } else { - // To ensure some kind of a backward compability. - try { - id = UUID.fromString(id.toString()); - } catch (IllegalArgumentException e) { - id = id.toString(); - } - } - DynamicBoat boat = createBoatFromJson((JSONObject) object.get(CompetitorMasterDataJsonSerializer.FIELD_BOAT)); - DynamicTeam team = teamDeserializer.deserialize((JSONObject) object.get(CompetitorMasterDataJsonSerializer.FIELD_TEAM)); - Competitor competitor; - competitor = domainFactory.getOrCreateCompetitor(id, name, displayColor, team, boat); - return competitor; - - } - - private DynamicBoat createBoatFromJson(JSONObject object) throws JsonDeserializationException { - String name = (String) object.get(CompetitorMasterDataJsonSerializer.FIELD_NAME); - String sailID = (String) object.get(CompetitorMasterDataJsonSerializer.FIELD_SAIL_ID); - BoatClass boatClass = boatClassDeserializer.deserialize((JSONObject) object.get(CompetitorMasterDataJsonSerializer.FIELD_BOAT_CLASS)); - return new BoatImpl(name, boatClass, sailID); - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/EventMasterDataJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/EventMasterDataJsonDeserializer.java deleted file mode 100644 index a9353569e89..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/EventMasterDataJsonDeserializer.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.sap.sailing.server.gateway.deserialization.masterdata.impl; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.common.impl.Util.Pair; -import com.sap.sailing.domain.masterdataimport.EventMasterData; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; -import com.sap.sailing.server.gateway.serialization.masterdata.impl.EventMasterDataJsonSerializer; - -public class EventMasterDataJsonDeserializer implements JsonDeserializer { - - @Override - public EventMasterData deserialize(JSONObject object) throws JsonDeserializationException { - String id = (String) object.get(EventMasterDataJsonSerializer.FIELD_ID); - String name = (String) object.get(EventMasterDataJsonSerializer.FIELD_NAME); - String venueName = (String) object.get(EventMasterDataJsonSerializer.FIELD_VENUE_NAME); - String pubUrl = (String) object.get(EventMasterDataJsonSerializer.FIELD_PUB_URL); - boolean isPublic = (Boolean) object.get(EventMasterDataJsonSerializer.FIELD_IS_PUBLIC); - Iterable> courseAreas = deserializeCourseAreas((JSONArray) object.get(EventMasterDataJsonSerializer.FIELD_COURSE_AREAS)); - return new EventMasterData(id, name, venueName, pubUrl, courseAreas, isPublic); - } - - private Iterable> deserializeCourseAreas(JSONArray jsonArray) { - List> courseAreas = new ArrayList>(); - for (Object courseObject : jsonArray) { - JSONObject courseJson = (JSONObject) courseObject; - String id = (String) courseJson.get(EventMasterDataJsonSerializer.FIELD_ID); - String name = (String) courseJson.get(EventMasterDataJsonSerializer.FIELD_NAME); - courseAreas.add(new Pair(id, name)); - } - Collections.sort(courseAreas, new Comparator>() { - @Override - public int compare(Pair courseArea1, Pair courseArea2) { - return courseArea1.getB().compareTo(courseArea2.getB()); - } - }); - return courseAreas; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/LeaderboardGroupMasterDataJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/LeaderboardGroupMasterDataJsonDeserializer.java deleted file mode 100644 index 54234adc38c..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/LeaderboardGroupMasterDataJsonDeserializer.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.sap.sailing.server.gateway.deserialization.masterdata.impl; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.BoatClass; -import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.DomainFactory; -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.LeaderboardMasterData; -import com.sap.sailing.domain.base.Nationality; -import com.sap.sailing.domain.base.configuration.RegattaConfiguration; -import com.sap.sailing.domain.base.impl.DynamicPerson; -import com.sap.sailing.domain.base.impl.DynamicTeam; -import com.sap.sailing.domain.common.Color; -import com.sap.sailing.domain.leaderboard.ScoringScheme; -import com.sap.sailing.domain.masterdataimport.EventMasterData; -import com.sap.sailing.domain.masterdataimport.LeaderboardGroupMasterData; -import com.sap.sailing.domain.masterdataimport.RaceColumnMasterData; -import com.sap.sailing.domain.masterdataimport.RegattaMasterData; -import com.sap.sailing.domain.racelog.RaceLogEvent; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.BoatClassJsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.ColorDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.FleetDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.NationalityJsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.PersonJsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.RegattaConfigurationJsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.TeamJsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogEventDeserializer; -import com.sap.sailing.server.gateway.serialization.masterdata.impl.LeaderboardGroupMasterDataJsonSerializer; - -public class LeaderboardGroupMasterDataJsonDeserializer implements JsonDeserializer { - - private final JsonDeserializer leaderboardDeserializer; - - private final JsonDeserializer eventDeserializer; - - private final JsonDeserializer regattaDeserializer; - - private final DomainFactory domainFactory; - - public static JsonDeserializer create(DomainFactory domainFactory) { - JsonDeserializer boatClassDeserializer = new BoatClassJsonDeserializer(domainFactory); - JsonDeserializer nationalityDeserializer = new NationalityJsonDeserializer(domainFactory); - JsonDeserializer personDeserializer = new PersonJsonDeserializer(nationalityDeserializer); - JsonDeserializer teamDeserializer = new TeamJsonDeserializer(personDeserializer); - JsonDeserializer competitorDeserializer = new CompetitorMasterDataDeserializer( - boatClassDeserializer, teamDeserializer, domainFactory); - JsonDeserializer raceLogEventDeserializer = RaceLogEventDeserializer.create(domainFactory); - JsonDeserializer leaderboardDeserializer = new LeaderboardMasterDataJsonDeserializer( - competitorDeserializer, domainFactory, raceLogEventDeserializer); - JsonDeserializer eventDeserializer = new EventMasterDataJsonDeserializer(); - JsonDeserializer colorDeserializer = new ColorDeserializer(); - JsonDeserializer fleetDeserializer = new FleetDeserializer(colorDeserializer); - JsonDeserializer configurationDeserializer = RegattaConfigurationJsonDeserializer.create(); - JsonDeserializer raceColumnDeserializer = new RaceColumnMasterDataJsonDeserializer(); - JsonDeserializer regattaDeserializer = new RegattaMasterDataJsonDeserializer( - fleetDeserializer, raceColumnDeserializer, configurationDeserializer); - JsonDeserializer leaderboardGroupMasterDataDeserializer = new LeaderboardGroupMasterDataJsonDeserializer( - leaderboardDeserializer, eventDeserializer, regattaDeserializer, domainFactory); - return leaderboardGroupMasterDataDeserializer; - } - - public LeaderboardGroupMasterDataJsonDeserializer(JsonDeserializer leaderboardDeserializer, - JsonDeserializer eventDeserializer, JsonDeserializer regattaDeserializer, DomainFactory domainFactory) { - this.leaderboardDeserializer = leaderboardDeserializer; - this.eventDeserializer = eventDeserializer; - this.regattaDeserializer = regattaDeserializer; - this.domainFactory = domainFactory; - } - - @Override - public LeaderboardGroupMasterData deserialize(JSONObject object) throws JsonDeserializationException { - List leaderboards = new ArrayList(); - JSONArray leaderboardsJson = (JSONArray) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_LEADERBOARDS); - for (Object leaderboardObject : leaderboardsJson) { - JSONObject leaderboardJson = (JSONObject) leaderboardObject; - leaderboards.add(leaderboardDeserializer.deserialize(leaderboardJson)); - } - JSONArray eventsJson = (JSONArray) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_EVENTS); - Set events = new HashSet(); - for (Object eventObject : eventsJson) { - JSONObject eventJson = (JSONObject) eventObject; - events.add(eventDeserializer.deserialize(eventJson)); - } - JSONArray regattasJson = (JSONArray) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_REGATTAS); - Set regattas = new HashSet(); - for (Object regattaObject : regattasJson) { - JSONObject regattaJson = (JSONObject) regattaObject; - regattas.add(regattaDeserializer.deserialize(regattaJson)); - } - String name = (String) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_NAME); - String description = (String) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_DESCRIPTION); - boolean displayGroupsReverse = (Boolean) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_DISPLAY_GROUPS_REVERSE); - Boolean hasOverallLeaderboard = (Boolean) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_HAS_OVERALL_LEADERBOARD); - if (hasOverallLeaderboard == null) { - hasOverallLeaderboard = false; - } - ScoringScheme overallLeaderboardScoringScheme = !hasOverallLeaderboard ? null : LeaderboardMasterDataJsonDeserializer.deserializeScoringScheme((JSONObject) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_OVERALL_LEADERBOARD_SCORING_SCHEME), domainFactory); - int[] overallLeaderboardResultDiscardingThresholds = !hasOverallLeaderboard ? null : LeaderboardMasterDataJsonDeserializer.deserializeResultDesicardingRule((JSONObject) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_OVERALL_LEADERBOARD_DISCARDING_THRESHOLDS)); - Map metaColumnsWithFactors = !hasOverallLeaderboard ? null : deserializeMetaColumnsWithFactor((JSONArray) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_OVERALL_LEADERBOARD_META_COLUMNS)); - List overallLeaderboardSuppressedCompetitorsIds = !hasOverallLeaderboard ? null - : LeaderboardMasterDataJsonDeserializer - .deserializeSuppressedCompetitors((JSONArray) object - .get(LeaderboardGroupMasterDataJsonSerializer.FIELD_OVERALL_LEADERBOARD_SUPPRESSED_COMPETITORS)); - return new LeaderboardGroupMasterData(name, description, displayGroupsReverse, hasOverallLeaderboard, overallLeaderboardScoringScheme, overallLeaderboardResultDiscardingThresholds, overallLeaderboardSuppressedCompetitorsIds, metaColumnsWithFactors, leaderboards, events, regattas); - } - - private Map deserializeMetaColumnsWithFactor(JSONArray jsonArray) { - Map metaColumnsWithFactors = new HashMap(); - if (jsonArray != null) { - for (Object obj : jsonArray) { - JSONObject jsonObj = (JSONObject) obj; - String name = (String) jsonObj.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_NAME); - Double explicitFactor = (Double) jsonObj - .get(LeaderboardGroupMasterDataJsonSerializer.FIELD_EXPLICIT_FACTOR); - metaColumnsWithFactors.put(name, explicitFactor); - } - } - return metaColumnsWithFactors; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/LeaderboardMasterDataJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/LeaderboardMasterDataJsonDeserializer.java deleted file mode 100644 index 2d39a69e570..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/LeaderboardMasterDataJsonDeserializer.java +++ /dev/null @@ -1,303 +0,0 @@ -package com.sap.sailing.server.gateway.deserialization.masterdata.impl; - -import java.io.Serializable; -import java.lang.reflect.Constructor; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.DomainFactory; -import com.sap.sailing.domain.base.LeaderboardMasterData; -import com.sap.sailing.domain.common.ScoringSchemeType; -import com.sap.sailing.domain.leaderboard.ScoringScheme; -import com.sap.sailing.domain.masterdataimport.FlexibleLeaderboardMasterData; -import com.sap.sailing.domain.masterdataimport.RaceColumnMasterData; -import com.sap.sailing.domain.masterdataimport.RegattaLeaderboardMasterData; -import com.sap.sailing.domain.masterdataimport.ScoreCorrectionMasterData; -import com.sap.sailing.domain.masterdataimport.SingleScoreCorrectionMasterData; -import com.sap.sailing.domain.racelog.RaceLogEvent; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.Helpers; -import com.sap.sailing.server.gateway.serialization.masterdata.impl.LeaderboardMasterDataJsonSerializer; - -public class LeaderboardMasterDataJsonDeserializer implements JsonDeserializer { - - private final JsonDeserializer competitorDeserializer; - private final DomainFactory domainFactory; - private final JsonDeserializer raceLogEventDeseriaizer; - private final JsonDeserializer raceColumnDeserializer = new RaceColumnMasterDataJsonDeserializer(); - - public LeaderboardMasterDataJsonDeserializer(JsonDeserializer competitorDeserializer, - DomainFactory domainFactory, JsonDeserializer raceLogEventDeseriaizer) { - this.competitorDeserializer = competitorDeserializer; - this.domainFactory = domainFactory; - this.raceLogEventDeseriaizer = raceLogEventDeseriaizer; - } - - @Override - public LeaderboardMasterData deserialize(JSONObject object) throws JsonDeserializationException { - if (object == null) { - return null; - } - String name = (String) object.get(LeaderboardMasterDataJsonSerializer.FIELD_NAME); - String displayName = (String) object.get(LeaderboardMasterDataJsonSerializer.FIELD_DISPLAY_NAME); - Map displayNamesByCompetitorId = deserializeCompetitorDisplayNames((JSONArray) object - .get(LeaderboardMasterDataJsonSerializer.FIELD_COMPETITOR_DISPLAY_NAMES)); - ScoreCorrectionMasterData scoreCorrection = deserializeScoreCorrection((JSONObject) object - .get(LeaderboardMasterDataJsonSerializer.FIELD_SCORE_CORRECTION)); - Map carriedPoints = deserializeCarriedPoints((JSONArray) object - .get(LeaderboardMasterDataJsonSerializer.FIELD_CARRIED_POINTS)); - List suppressedCompetitors = deserializeSuppressedCompetitors((JSONArray) object - .get(LeaderboardMasterDataJsonSerializer.FIELD_SUPPRESSED_COMPETITORS)); - Map>> raceLogEvents = deserializeRaceLogEvents((JSONArray) object - .get(LeaderboardMasterDataJsonSerializer.FIELD_RACE_LOG_EVENTS)); - int[] resultDiscardingRule = deserializeResultDesicardingRule((JSONObject) object - .get(LeaderboardMasterDataJsonSerializer.FIELD_RESULT_DISCARDING_RULE)); - boolean isRegattaLeaderBoard = (Boolean) object - .get(LeaderboardMasterDataJsonSerializer.FIELD_REGATTA_LEADERBOARD); - - Map competitorsById = new HashMap(); - JSONArray competitorsJsonArray = (JSONArray) object.get(LeaderboardMasterDataJsonSerializer.FIELD_COMPETITORS); - - for (Object obj : competitorsJsonArray) { - JSONObject competitorJson = (JSONObject) obj; - Competitor deserializedCompetitor = competitorDeserializer.deserialize(competitorJson); - competitorsById.put(deserializedCompetitor, deserializedCompetitor); - } - final LeaderboardMasterData result; - if (isRegattaLeaderBoard) { - String regattaName = (String) object.get(LeaderboardMasterDataJsonSerializer.FIELD_REGATTA_NAME); - result = new RegattaLeaderboardMasterData(name, displayName, resultDiscardingRule, competitorsById, - scoreCorrection, regattaName, carriedPoints, suppressedCompetitors, displayNamesByCompetitorId, - raceLogEvents); - - } else { - ScoringScheme scoringScheme = deserializeScoringScheme((JSONObject) object - .get(LeaderboardMasterDataJsonSerializer.FIELD_SCORING_SCHEME), domainFactory); - String courseAreaId = deserializeCourseAreaId((JSONObject) object - .get(LeaderboardMasterDataJsonSerializer.FIELD_COURSE_AREA)); - List raceColumns = deserializeRaceColumns((JSONArray) object - .get(LeaderboardMasterDataJsonSerializer.FIELD_RACE_COLUMNS)); - result = new FlexibleLeaderboardMasterData(name, displayName, resultDiscardingRule, competitorsById, - scoreCorrection, scoringScheme, courseAreaId, raceColumns, carriedPoints, suppressedCompetitors, - displayNamesByCompetitorId, raceLogEvents); - } - return result; - } - - private Map>> deserializeRaceLogEvents(JSONArray jsonArray) { - Map>> raceLogEvents = new HashMap>>(); - for (Object obj : jsonArray) { - JSONObject json = (JSONObject) obj; - String raceColumnName = (String) json.get(LeaderboardMasterDataJsonSerializer.FIELD_RACE_COLUMN_NAME); - Map> perFleet = deserializeRaceLogEventsForFleets((JSONArray) json - .get(LeaderboardMasterDataJsonSerializer.FIELD_FLEETS)); - raceLogEvents.put(raceColumnName, perFleet); - } - return raceLogEvents; - } - - private Map> deserializeRaceLogEventsForFleets(JSONArray fleets) { - Map> perFleet = new HashMap>(); - for (Object obj : fleets) { - JSONObject json = (JSONObject) obj; - String fleetName = (String) json.get(LeaderboardMasterDataJsonSerializer.FIELD_FLEET_NAME); - List logEvents = deserializeRaceLogEventArray((JSONArray) json - .get(LeaderboardMasterDataJsonSerializer.FIELD_RACE_LOG_EVENTS)); - perFleet.put(fleetName, logEvents); - } - return perFleet; - } - - private List deserializeRaceLogEventArray(JSONArray jsonArray) { - List logEvents = new ArrayList(); - for (Object obj : jsonArray) { - JSONObject json = (JSONObject) obj; - try { - logEvents.add(raceLogEventDeseriaizer.deserialize(json)); - } catch (JsonDeserializationException e) { - // TODO Exception handling - e.printStackTrace(); - } - } - return logEvents; - } - - private Map deserializeCompetitorDisplayNames(JSONArray jsonArray) { - Map result = new HashMap(); - for (Object obj : jsonArray) { - JSONObject json = (JSONObject) obj; - Serializable id; - try { - JSONObject object = (JSONObject) obj; - id = extractId(object); - } catch (Exception e) { - // Backward compability - id = (String) obj; - } - String displayName = (String) json.get(LeaderboardMasterDataJsonSerializer.FIELD_DISPLAY_NAME); - result.put(id, displayName); - } - return result; - } - - public static List deserializeSuppressedCompetitors(JSONArray jsonArray) { - List ids = new ArrayList(); - if (jsonArray != null) { - for (Object obj : jsonArray) { - Serializable id; - try { - JSONObject object = (JSONObject) obj; - id = extractId(object); - } catch (Exception e) { - // Backward compability - id = (String) obj; - } - ids.add(id); - } - } - return ids; - } - - private static Serializable extractId(JSONObject object) { - Serializable id; - Object idClassName = object.get(LeaderboardMasterDataJsonSerializer.FIELD_TYPE); - id = (Serializable) object.get(LeaderboardMasterDataJsonSerializer.FIELD_COMPETITOR_ID); - if (idClassName != null) { - try { - Class idClass = Class.forName((String) idClassName); - if (Number.class.isAssignableFrom(idClass)) { - Constructor constructorFromString = idClass.getConstructor(String.class); - id = (Serializable) constructorFromString.newInstance(id.toString()); - } else if (UUID.class.isAssignableFrom(idClass)) { - id = Helpers.tryUuidConversion(id); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - } else { - // To ensure some kind of a backward compability. - try { - id = UUID.fromString(id.toString()); - } catch (IllegalArgumentException e) { - id = id.toString(); - } - } - return id; - } - - private Map deserializeCarriedPoints(JSONArray jsonArray) { - Map carriedPoints = new HashMap(); - for (Object obj : jsonArray) { - JSONObject jsonCarriedPoints = (JSONObject) obj; - Serializable id; - try { - id = extractId(jsonCarriedPoints); - } catch (Exception e) { - // Backward compability - id = (String) obj; - } - Double carried = (Double) jsonCarriedPoints.get(LeaderboardMasterDataJsonSerializer.FIELD_CARRIED); - carriedPoints.put(id, carried); - } - return carriedPoints; - } - - private ScoreCorrectionMasterData deserializeScoreCorrection(JSONObject jsonObject) { - String comment = (String) jsonObject.get(LeaderboardMasterDataJsonSerializer.FIELD_COMMENT); - Object timeObject = jsonObject.get(LeaderboardMasterDataJsonSerializer.FIELD_TIME_POINT); - Long timepointMillis = null; - if (timeObject != null) { - timepointMillis = (Long) timeObject; - } - - JSONArray forRaceColumns = (JSONArray) jsonObject - .get(LeaderboardMasterDataJsonSerializer.FIELD_FOR_RACE_COLUMNS); - Map> correctionForRaceColumns = new HashMap>(); - for (Object obj : forRaceColumns) { - JSONObject json = (JSONObject) obj; - String raceColumnName = (String) json.get(LeaderboardMasterDataJsonSerializer.FIELD_RACE_COLUMN_NAME); - Iterable correctionsForRaceColumn = deserializeScoreCorrectionForRaceColumn((JSONArray) json - .get(LeaderboardMasterDataJsonSerializer.FIELD_FOR_COMPETITORS)); - correctionForRaceColumns.put(raceColumnName, correctionsForRaceColumn); - } - return new ScoreCorrectionMasterData(comment, timepointMillis, correctionForRaceColumns); - } - - private Iterable deserializeScoreCorrectionForRaceColumn(JSONArray jsonArray) { - Set result = new HashSet(); - for (Object obj : jsonArray) { - JSONObject json = (JSONObject) obj; - result.add(deserializeScoreCorrectionForCompetitor(json)); - } - return result; - } - - private SingleScoreCorrectionMasterData deserializeScoreCorrectionForCompetitor(JSONObject json) { - Serializable competitorId = extractId(json); - Double explicitScoreCorrection = ((Double) json - .get(LeaderboardMasterDataJsonSerializer.FIELD_EXPLICIT_SCORE_CORRECTION)); - String maxPointsReason = (String) json.get(LeaderboardMasterDataJsonSerializer.FIELD_MAX_POINTS_REASON); - return new SingleScoreCorrectionMasterData(competitorId, explicitScoreCorrection, maxPointsReason); - } - - private List deserializeRaceColumns(JSONArray array) throws JsonDeserializationException { - List columns = new ArrayList(); - for (Object columnObj : array) { - JSONObject columnJson = (JSONObject) columnObj; - columns.add(raceColumnDeserializer.deserialize(columnJson)); - } - return columns; - } - - private String deserializeCourseAreaId(JSONObject jsonObject) { - if (jsonObject == null) { - return null; - } - String id = (String) jsonObject.get(LeaderboardMasterDataJsonSerializer.FIELD_ID); - return id; - - } - - public static ScoringScheme deserializeScoringScheme(JSONObject jsonObject, DomainFactory domainFactory) { - final ScoringScheme result; - if (jsonObject == null) { - result = null; - } else { - String type = (String) jsonObject.get(LeaderboardMasterDataJsonSerializer.FIELD_TYPE); - if (type == null) { - result = null; - } else { - result = domainFactory.createScoringScheme(ScoringSchemeType.valueOf(type)); - } - } - return result; - } - - public static int[] deserializeResultDesicardingRule(JSONObject jsonObject) { - final int[] result; - if (jsonObject == null) { - result = null; - } else { - JSONArray indeces = (JSONArray) jsonObject.get(LeaderboardMasterDataJsonSerializer.FIELD_INDICES); - if (indeces == null) { - result = null; - } else { - result = new int[indeces.size()]; - for (int i = 0; i < result.length; i++) { - result[i] = ((Long) indeces.get(i)).intValue(); - } - } - } - return result; - } -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/MediaTrackJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/MediaTrackJsonDeserializer.java deleted file mode 100644 index e0ee293ca34..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/MediaTrackJsonDeserializer.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.sap.sailing.server.gateway.deserialization.masterdata.impl; - -import java.util.Date; - -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.common.media.MediaTrack; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; -import com.sap.sailing.server.gateway.serialization.masterdata.impl.MediaTrackJsonSerializer; - -public class MediaTrackJsonDeserializer implements JsonDeserializer { - - @Override - public MediaTrack deserialize(JSONObject object) throws JsonDeserializationException { - String dbId = (String) object.get(MediaTrackJsonSerializer.FIELD_DB_ID); - int durationInMillis = ((Long) object.get(MediaTrackJsonSerializer.FIELD_DURATION)).intValue(); - MediaTrack.MimeType mimeType = MediaTrack.MimeType.valueOf((String) object - .get(MediaTrackJsonSerializer.FIELD_MIME_TYPE)); - long startTimeInMillis = (Long) object.get(MediaTrackJsonSerializer.FIELD_START_TIME); - Date startTime = new Date(startTimeInMillis); - MediaTrack.Status status = MediaTrack.Status - .valueOf((String) object.get(MediaTrackJsonSerializer.FIELD_STATUS)); - String title = (String) object.get(MediaTrackJsonSerializer.FIELD_TITLE); - String url = (String) object.get(MediaTrackJsonSerializer.FIELD_URL); - MediaTrack mediaTrack = new MediaTrack(dbId, title, url, startTime, durationInMillis, mimeType); - mediaTrack.status = status; - return mediaTrack; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/RaceColumnMasterDataJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/RaceColumnMasterDataJsonDeserializer.java deleted file mode 100644 index 06bc2cd3ba7..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/RaceColumnMasterDataJsonDeserializer.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.sap.sailing.server.gateway.deserialization.masterdata.impl; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.common.RaceIdentifier; -import com.sap.sailing.domain.common.RegattaNameAndRaceName; -import com.sap.sailing.domain.masterdataimport.RaceColumnMasterData; -import com.sap.sailing.domain.masterdataimport.WindTrackMasterData; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; -import com.sap.sailing.server.gateway.serialization.masterdata.impl.RaceColumnMasterDataJsonSerializer; - -public class RaceColumnMasterDataJsonDeserializer implements JsonDeserializer { - - private final JsonDeserializer windtrackDeserializer; - - public RaceColumnMasterDataJsonDeserializer() { - windtrackDeserializer = new WindTrackMasterDataJsonDeserializer(); - } - - @Override - public RaceColumnMasterData deserialize(JSONObject columnJson) throws JsonDeserializationException { - String columnName = (String) columnJson - .get(RaceColumnMasterDataJsonSerializer.FIELD_NAME); - Boolean medal = (Boolean) columnJson - .get(RaceColumnMasterDataJsonSerializer.FIELD_MEDAL_RACE); - Map raceIdentifiers = new HashMap(); - Double factor = (Double) columnJson.get(RaceColumnMasterDataJsonSerializer.FIELD_FACTOR); - JSONArray jsonRaceIdentifiers = (JSONArray) columnJson.get(RaceColumnMasterDataJsonSerializer.FIELD_RACE_IDENTIFIERS); - for (Object raceIdentifierObject : jsonRaceIdentifiers) { - JSONObject jsonRaceIdentifier = (JSONObject) raceIdentifierObject; - String fleetName = (String) jsonRaceIdentifier.get(RaceColumnMasterDataJsonSerializer.FIELD_FLEET_NAME); - String raceName = (String) jsonRaceIdentifier.get(RaceColumnMasterDataJsonSerializer.FIELD_RACE_NAME); - String regattaName = (String) jsonRaceIdentifier.get(RaceColumnMasterDataJsonSerializer.FIELD_REGATTA_NAME); - RaceIdentifier raceIdentifier = new RegattaNameAndRaceName(regattaName, raceName); - raceIdentifiers.put(fleetName, raceIdentifier); - } - JSONArray windJson = (JSONArray) columnJson.get(RaceColumnMasterDataJsonSerializer.FIELD_WIND); - Set windTracks = null; - if (windJson != null) { - windTracks = deserializeWindTracks(windJson); - } - return new RaceColumnMasterData(columnName, medal, raceIdentifiers, factor, windTracks); - } - - private Set deserializeWindTracks(JSONArray windJson) throws JsonDeserializationException { - Set tracks = new HashSet(); - for (Object obj : windJson) { - JSONObject json = (JSONObject) obj; - tracks.add(windtrackDeserializer.deserialize(json)); - } - return tracks; - } -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/RegattaMasterDataJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/RegattaMasterDataJsonDeserializer.java deleted file mode 100644 index 2e7be0956cc..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/RegattaMasterDataJsonDeserializer.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.sap.sailing.server.gateway.deserialization.masterdata.impl; - -import java.io.Serializable; -import java.lang.reflect.Constructor; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.UUID; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.configuration.RegattaConfiguration; -import com.sap.sailing.domain.masterdataimport.RaceColumnMasterData; -import com.sap.sailing.domain.masterdataimport.RegattaMasterData; -import com.sap.sailing.domain.masterdataimport.SeriesMasterData; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.Helpers; -import com.sap.sailing.server.gateway.serialization.masterdata.impl.LeaderboardMasterDataJsonSerializer; -import com.sap.sailing.server.gateway.serialization.masterdata.impl.RegattaMasterDataJsonSerializer; - -public class RegattaMasterDataJsonDeserializer implements JsonDeserializer { - - private final JsonDeserializer fleetDeserializer; - private final JsonDeserializer raceColumnDeserializer; - private final JsonDeserializer configurationDeserializer; - - public RegattaMasterDataJsonDeserializer(JsonDeserializer fleetDeserializer, JsonDeserializer raceColumnDeserializer, - JsonDeserializer configurationDeserializer) { - this.fleetDeserializer = fleetDeserializer; - this.raceColumnDeserializer = raceColumnDeserializer; - this.configurationDeserializer = configurationDeserializer; - } - - @Override - public RegattaMasterData deserialize(JSONObject object) throws JsonDeserializationException { - Object idClassName = object.get(RegattaMasterDataJsonSerializer.FIELD_ID_TYPE); - Serializable id = (Serializable) object.get(RegattaMasterDataJsonSerializer.FIELD_ID); - if (idClassName != null) { - try { - Class idClass = Class.forName((String) idClassName); - if (Number.class.isAssignableFrom(idClass)) { - Constructor constructorFromString = idClass.getConstructor(String.class); - id = (Serializable) constructorFromString.newInstance(id.toString()); - } else if (UUID.class.isAssignableFrom(idClass)) { - id = Helpers.tryUuidConversion(id); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - } else { - // To ensure some kind of a backward compability. - try { - id = UUID.fromString(id.toString()); - } catch (IllegalArgumentException e) { - id = id.toString(); - } - } - String regattaName = (String) object.get(RegattaMasterDataJsonSerializer.FIELD_REGATTA_NAME); - String baseName = (String) object.get(RegattaMasterDataJsonSerializer.FIELD_BASE_NAME); - String defaultCourseAreaId = (String) object.get(RegattaMasterDataJsonSerializer.FIELD_DEFAULT_COURSE_AREA_ID); - String boatClassName = (String) object.get(RegattaMasterDataJsonSerializer.FIELD_BOAT_CLASS_NAME); - String scoringSchemeType = (String) object.get(RegattaMasterDataJsonSerializer.FIELD_SCORING_SCHEME_TYPE); - boolean isPersistent = (Boolean) object.get(RegattaMasterDataJsonSerializer.FIELD_IS_PERSISTENT); - Iterable series = deserializeSeries((JSONArray) object.get(RegattaMasterDataJsonSerializer.FIELD_SERIES)); - Iterable raceIdsAsStrings = deserializeRaceIds((JSONArray) object.get(RegattaMasterDataJsonSerializer.FIELD_REGATTA_RACE_IDS)); - - RegattaConfiguration regattaConfiguration = null; - if (object.containsKey(RegattaMasterDataJsonSerializer.FIELD_REGATTA_CONFIGURATION)) { - regattaConfiguration = configurationDeserializer.deserialize( - Helpers.getNestedObjectSafe(object, RegattaMasterDataJsonSerializer.FIELD_REGATTA_CONFIGURATION)); - } - - return new RegattaMasterData(id, baseName, defaultCourseAreaId, boatClassName, scoringSchemeType, - series, isPersistent, regattaName, raceIdsAsStrings, regattaConfiguration); - } - - private Iterable deserializeRaceIds(JSONArray jsonArray) { - Set raceIdStrings = new HashSet(); - for (Object obj : jsonArray) { - String id = (String) obj; - raceIdStrings.add(id); - } - return raceIdStrings; - } - - private Iterable deserializeSeries(JSONArray jsonArray) throws JsonDeserializationException { - List series = new ArrayList(); - for (Object seriesObject : jsonArray) { - JSONObject seriesJson = (JSONObject) seriesObject; - String name = (String) seriesJson.get(RegattaMasterDataJsonSerializer.FIELD_NAME); - boolean isMedal = (Boolean) seriesJson.get(RegattaMasterDataJsonSerializer.FIELD_IS_MEDAL); - Iterable fleets = deserializeFleets((JSONArray) seriesJson.get(RegattaMasterDataJsonSerializer.FIELD_FLEETS)); - Iterable raceColumnNames = deserializeRaceColumnNames((JSONArray) seriesJson.get(RegattaMasterDataJsonSerializer.FIELD_RACE_COLUMNS)); - int[] discardingRule = deserializeResultDesicardingRule((JSONObject) seriesJson.get(RegattaMasterDataJsonSerializer.FIELD_RESULT_DISCARDING_RULE)); - series.add(new SeriesMasterData(name, isMedal, fleets, raceColumnNames, discardingRule)); - } - - return series; - } - - private Iterable deserializeRaceColumnNames(JSONArray jsonArray) throws JsonDeserializationException { - List raceColumns = new ArrayList(); - for (Object raceColumnObject : jsonArray) { - JSONObject jsonRaceColumn = (JSONObject) raceColumnObject; - raceColumns.add(raceColumnDeserializer.deserialize(jsonRaceColumn)); - } - return raceColumns; - } - - private Iterable deserializeFleets(JSONArray jsonArray) { - List fleets = new ArrayList(); - for (Object fleetObject : jsonArray) { - JSONObject fleetJson = (JSONObject) fleetObject; - try { - fleets.add(fleetDeserializer.deserialize(fleetJson)); - } catch (JsonDeserializationException e) { - // TODO exception handling - e.printStackTrace(); - } - - } - return fleets; - } - - private int[] deserializeResultDesicardingRule(JSONObject jsonObject) { - if (jsonObject == null) { - return null; - } - JSONArray indeces = (JSONArray) jsonObject.get(LeaderboardMasterDataJsonSerializer.FIELD_INDICES); - if (indeces == null) { - return null; - } - int[] result = new int[indeces.size()]; - for (int i = 0; i < result.length; i++) { - result[i] = ((Long) indeces.get(i)).intValue(); - } - return result; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/WindTrackMasterDataJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/WindTrackMasterDataJsonDeserializer.java deleted file mode 100644 index a62a54b3ecb..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/masterdata/impl/WindTrackMasterDataJsonDeserializer.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.sap.sailing.server.gateway.deserialization.masterdata.impl; - -import java.io.Serializable; -import java.lang.reflect.Constructor; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.masterdataimport.WindTrackMasterData; -import com.sap.sailing.domain.tracking.Wind; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; -import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.Helpers; -import com.sap.sailing.server.gateway.deserialization.impl.PositionJsonDeserializer; -import com.sap.sailing.server.gateway.deserialization.impl.WindJsonDeserializer; -import com.sap.sailing.server.gateway.serialization.masterdata.impl.WindTrackMasterDataJsonSerializer; - -public class WindTrackMasterDataJsonDeserializer implements JsonDeserializer { - - private final JsonDeserializer windDeserializer; - - public WindTrackMasterDataJsonDeserializer() { - JsonDeserializer positionDeserializer = new PositionJsonDeserializer(); - windDeserializer = new WindJsonDeserializer(positionDeserializer); - } - - @Override - public WindTrackMasterData deserialize(JSONObject object) throws JsonDeserializationException { - String windSourceTypeName = (String) object.get(WindTrackMasterDataJsonSerializer.FIELD_WIND_SOURCE_TYPE); - Serializable windSourceId = (Serializable) object.get(WindTrackMasterDataJsonSerializer.FIELD_WIND_SOURCE_ID); - JSONArray fixesJson = (JSONArray) object.get(WindTrackMasterDataJsonSerializer.FIELD_FIXES); - String regattaName = (String) object.get(WindTrackMasterDataJsonSerializer.FIELD_REGATTA_NAME); - String raceName = (String) object.get(WindTrackMasterDataJsonSerializer.FIELD_RACE_NAME); - Object idClassName = object.get(WindTrackMasterDataJsonSerializer.FIELD_ID_TYPE); - Serializable id = (Serializable) object.get(WindTrackMasterDataJsonSerializer.FIELD_RACE_ID); - if (id != null) { - if (idClassName != null) { - try { - Class idClass = Class.forName((String) idClassName); - if (Number.class.isAssignableFrom(idClass)) { - Constructor constructorFromString = idClass.getConstructor(String.class); - id = (Serializable) constructorFromString.newInstance(id.toString()); - } else if (UUID.class.isAssignableFrom(idClass)) { - id = Helpers.tryUuidConversion(id); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - } else { - // To ensure some kind of a backward compability. - try { - id = UUID.fromString(id.toString()); - } catch (IllegalArgumentException e) { - id = id.toString(); - } - } - } - Set fixes = new HashSet(); - for (Object obj : fixesJson) { - JSONObject json = (JSONObject) obj; - Wind wind = windDeserializer.deserialize(json); - fixes.add(wind); - } - // return new WindTrackMasterData(windSourceTypeName, windSourceId, fixes, regattaName, raceName, id); - return null; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/CompetitorMasterDataJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/CompetitorMasterDataJsonSerializer.java deleted file mode 100644 index adb07cb6ba1..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/CompetitorMasterDataJsonSerializer.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.masterdata.impl; - -import java.io.Serializable; -import java.util.UUID; - -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.Boat; -import com.sap.sailing.domain.base.BoatClass; -import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.Team; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; - -public class CompetitorMasterDataJsonSerializer implements JsonSerializer { - - public static final String FIELD_BOAT_CLASS = "boatClass"; - public static final String FIELD_SAIL_ID = "sailID"; - public static final String FIELD_TEAM = "team"; - public static final String FIELD_BOAT = "boat"; - public static final String FIELD_ID = "id"; - public static final String FIELD_NAME = "name"; - public static final String FIELD_ID_TYPE = "idType"; - public static final String FIELD_DISPLAY_COLOR = "displayColor"; - private final JsonSerializer boatClassSerializer; - private final JsonSerializer teamSerializer; - - - - public CompetitorMasterDataJsonSerializer(JsonSerializer boatClassSerializer, - JsonSerializer teamSerializer) { - this.boatClassSerializer = boatClassSerializer; - this.teamSerializer = teamSerializer; - } - - @Override - public JSONObject serialize(Competitor competitor) { - //Check if it is null. This can happen for race log events that specify competitors - // but where the race is not tracked. - if (competitor == null) { - return null; - } - JSONObject jsonCompetitor = new JSONObject(); - jsonCompetitor.put(FIELD_NAME, competitor.getName()); - jsonCompetitor.put(FIELD_DISPLAY_COLOR, competitor.getColor()==null?null:competitor.getColor().getAsHtml()); - // Special treatment for UUIDs. They are represented as String because JSON doesn't have a way to represent them - // otherwise. However, other, e.g., numeric, types used to encode a serializable ID must be preserved according - // to JSON semantics. - // Also see the corresponding case distinction in the deserialized which first tries to parse a string as a UUID - // becore returning the ID as is. - jsonCompetitor.put(FIELD_ID_TYPE, competitor.getId().getClass().getName()); - Serializable competitorId = competitor.getId() instanceof UUID ? competitor.getId().toString() : competitor - .getId(); - jsonCompetitor.put(FIELD_ID, competitorId); - jsonCompetitor.put(FIELD_BOAT, createJsonForBoat(competitor.getBoat())); - jsonCompetitor.put(FIELD_TEAM, teamSerializer.serialize(competitor.getTeam())); - return jsonCompetitor; - } - - private JSONObject createJsonForBoat(Boat boat) { - JSONObject jsonBoat = new JSONObject(); - jsonBoat.put(FIELD_NAME, boat.getName()); - jsonBoat.put(FIELD_SAIL_ID, boat.getSailID()); - jsonBoat.put(FIELD_BOAT_CLASS, boatClassSerializer.serialize(boat.getBoatClass())); - return jsonBoat; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/EventMasterDataJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/EventMasterDataJsonSerializer.java deleted file mode 100644 index f8bacf5f0f5..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/EventMasterDataJsonSerializer.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.masterdata.impl; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.CourseArea; -import com.sap.sailing.domain.base.Event; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; - -public class EventMasterDataJsonSerializer implements JsonSerializer { - - public static final String FIELD_ID = "id"; - public static final String FIELD_NAME = "name"; - public static final String FIELD_VENUE_NAME = "venueName"; - public static final String FIELD_PUB_URL = "publicationUrl"; - public static final String FIELD_COURSE_AREAS = "courseAreas"; - public static final String FIELD_IS_PUBLIC = "isPublic"; - - - @Override - public JSONObject serialize(Event event) { - JSONObject result = new JSONObject(); - result.put(FIELD_ID, event.getId().toString()); - result.put(FIELD_NAME, event.getName()); - result.put(FIELD_VENUE_NAME, event.getVenue().getName()); - result.put(FIELD_PUB_URL, event.getPublicationUrl()); - result.put(FIELD_IS_PUBLIC, event.isPublic()); - result.put(FIELD_COURSE_AREAS, createJsonArrayForCourseAreas(event.getVenue().getCourseAreas())); - //TODO Sadly event.getRegattas() returns an empty collection - //result.put(FIELD_REGATTAS, createJsonArrayForRegattas(event.getRegattas())); - return result; - } - - private JSONArray createJsonArrayForCourseAreas(Iterable courseAreas) { - JSONArray array = new JSONArray(); - for (CourseArea courseArea : courseAreas) { - array.add(createJsonForCourseArea(courseArea)); - } - return array; - } - - private JSONObject createJsonForCourseArea(CourseArea courseArea) { - JSONObject result = new JSONObject(); - result.put(FIELD_ID, courseArea.getId().toString()); - result.put(FIELD_NAME, courseArea.getName()); - return result; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/LeaderboardGroupMasterDataJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/LeaderboardGroupMasterDataJsonSerializer.java deleted file mode 100644 index 09e593d2654..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/LeaderboardGroupMasterDataJsonSerializer.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.masterdata.impl; - -import java.util.HashSet; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.CourseArea; -import com.sap.sailing.domain.base.Event; -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.RaceColumn; -import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.base.configuration.RegattaConfiguration; -import com.sap.sailing.domain.common.Color; -import com.sap.sailing.domain.leaderboard.Leaderboard; -import com.sap.sailing.domain.leaderboard.LeaderboardGroup; -import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard; -import com.sap.sailing.domain.racelog.RaceLogEvent; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.BoatClassJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.ColorJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.FleetJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.NationalityJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.PersonJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.RegattaConfigurationJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.TeamJsonSerializer; -import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogEventSerializer; - -public class LeaderboardGroupMasterDataJsonSerializer implements JsonSerializer { - - public static final String FIELD_LEADERBOARDS = "leaderboards"; - public static final String FIELD_HAS_OVERALL_LEADERBOARD = "overallLeaderboard"; - public static final String FIELD_OVERALL_LEADERBOARD_SCORING_SCHEME = "overallLeaderboardScoringScheme"; - public static final String FIELD_OVERALL_LEADERBOARD_DISCARDING_THRESHOLDS = "overallLeaderboardDiscardingThresholds"; - public static final String FIELD_DESCRIPTION = "description"; - public static final String FIELD_NAME = "name"; - public static final String FIELD_DISPLAY_GROUPS_REVERSE = "displayGroupsReverse"; - public static final String FIELD_EVENTS = "events"; - public static final String FIELD_REGATTAS = "regattas"; - public static final String FIELD_OVERALL_LEADERBOARD_META_COLUMNS = "overallLeaderboardMetaColumns"; - public static final String FIELD_OVERALL_LEADERBOARD_SUPPRESSED_COMPETITORS = "overallLeaderboardSuppressedCompetitors"; - public static final String FIELD_EXPLICIT_FACTOR = "explicitFactor"; - private final LeaderboardMasterDataJsonSerializer leadboardSerializer; - private final Iterable allEvents; - private final JsonSerializer eventSerializer; - private final JsonSerializer regattaSerializer; - - /** - * If masterdata is imported from a server where exported races are not tracked, data like race log competitor - * data may be lost in the process of serialization - * @param events - * @param regattaForRaceIdString - */ - public LeaderboardGroupMasterDataJsonSerializer(Iterable events, ConcurrentHashMap regattaForRaceIdStrings) { - this.allEvents = events; - NationalityJsonSerializer nationalityJsonSerializer = new NationalityJsonSerializer(); - PersonJsonSerializer personSerializer = new PersonJsonSerializer(nationalityJsonSerializer); - TeamJsonSerializer teamSerializer = new TeamJsonSerializer(personSerializer); - BoatClassJsonSerializer boatClassSerializer = new BoatClassJsonSerializer(); - CompetitorMasterDataJsonSerializer competitorSerializer = new CompetitorMasterDataJsonSerializer( - boatClassSerializer, teamSerializer); - JsonSerializer colorSerializer = new ColorJsonSerializer(); - JsonSerializer fleetSerializer = new FleetJsonSerializer(colorSerializer); - JsonSerializer raceColumnSerializer = new RaceColumnMasterDataJsonSerializer(); - JsonSerializer configurationSerializer = RegattaConfigurationJsonSerializer.create(); - JsonSerializer raceLogEventSerializer = RaceLogEventSerializer.create(competitorSerializer); - eventSerializer = new EventMasterDataJsonSerializer(); - leadboardSerializer = new LeaderboardMasterDataJsonSerializer(competitorSerializer, raceColumnSerializer, raceLogEventSerializer); - regattaSerializer = new RegattaMasterDataJsonSerializer(fleetSerializer, raceColumnSerializer, configurationSerializer, regattaForRaceIdStrings); - } - - @Override - public JSONObject serialize(LeaderboardGroup leaderboardGroup) { - JSONObject jsonLeaderboardGroup = new JSONObject(); - jsonLeaderboardGroup.put(FIELD_NAME, leaderboardGroup.getName()); - jsonLeaderboardGroup.put(FIELD_DESCRIPTION, leaderboardGroup.getDescription()); - jsonLeaderboardGroup.put(FIELD_HAS_OVERALL_LEADERBOARD, leaderboardGroup.getOverallLeaderboard() != null); - if (leaderboardGroup.getOverallLeaderboard() != null) { - LeaderboardGroupMetaLeaderboard metaLeader = (LeaderboardGroupMetaLeaderboard) leaderboardGroup - .getOverallLeaderboard(); - jsonLeaderboardGroup.put(FIELD_OVERALL_LEADERBOARD_DISCARDING_THRESHOLDS, - LeaderboardMasterDataJsonSerializer.createJsonForResultDiscardingRule(metaLeader - .getResultDiscardingRule())); - jsonLeaderboardGroup.put(FIELD_OVERALL_LEADERBOARD_SCORING_SCHEME, - LeaderboardMasterDataJsonSerializer.createJsonForScoringScheme(metaLeader.getScoringScheme())); - jsonLeaderboardGroup.put(FIELD_OVERALL_LEADERBOARD_META_COLUMNS, createJsonArrayForMetaColumns(metaLeader)); - jsonLeaderboardGroup.put(FIELD_OVERALL_LEADERBOARD_SUPPRESSED_COMPETITORS, createJsonArrayForSuppressedCompetitors(metaLeader.getSuppressedCompetitors())); - } - jsonLeaderboardGroup.put(FIELD_LEADERBOARDS, createJsonArrayForLeaderboards(leaderboardGroup.getLeaderboards())); - jsonLeaderboardGroup.put(FIELD_DISPLAY_GROUPS_REVERSE, leaderboardGroup.isDisplayGroupsInReverseOrder()); - // Important to call this after serializing leaderboards, as the leaderboard serializer has state - jsonLeaderboardGroup.put(FIELD_EVENTS, createJsonArrayForEvents()); - jsonLeaderboardGroup.put(FIELD_REGATTAS, createJsonArrayForRegattas()); - return jsonLeaderboardGroup; - } - - private JSONArray createJsonArrayForSuppressedCompetitors(Iterable suppressedCompetitors) { - JSONArray array = new JSONArray(); - for (Competitor competitor : suppressedCompetitors) { - array.add(competitor.getId().toString()); - } - return array; - } - - private JSONArray createJsonArrayForMetaColumns(LeaderboardGroupMetaLeaderboard metaLeader) { - JSONArray array = new JSONArray(); - for (RaceColumn column : metaLeader.getRaceColumns()) { - JSONObject metaColumn = new JSONObject(); - metaColumn.put(FIELD_NAME, column.getName()); - metaColumn.put(FIELD_EXPLICIT_FACTOR, column.getExplicitFactor()); - array.add(metaColumn); - } - return array; - } - - private JSONArray createJsonArrayForRegattas() { - JSONArray array = new JSONArray(); - Iterable regattas = leadboardSerializer.getRegattas(); - for (Regatta regatta : regattas) { - array.add(regattaSerializer.serialize(regatta)); - } - return array; - } - - /* - * TODO, this is a hack to find out which events are needed for the exported - * regatta leaderboards. should be replaced by a proper connection from regatta to event - */ - private JSONArray createJsonArrayForEvents() { - Set courseAreaIds = leadboardSerializer.getCourseAreaIds(); - Set eventsThatShouldBeExported = new HashSet(); - for (Event event : allEvents) { - boolean shouldBeExported = false; - for (CourseArea courseArea : event.getVenue().getCourseAreas()) { - if (courseAreaIds.contains(courseArea.getId().toString())) { - shouldBeExported = true; - break; - } - } - if (shouldBeExported) { - eventsThatShouldBeExported.add(event); - } - } - - JSONArray array = new JSONArray(); - for (Event event : eventsThatShouldBeExported) { - array.add(eventSerializer.serialize(event)); - } - return array; - } - - private JSONArray createJsonArrayForLeaderboards(Iterable leaderboards) { - JSONArray jsonLeaderBoards = new JSONArray(); - for (Leaderboard leaderboard : leaderboards) { - JSONObject jsonLeaderboard = leadboardSerializer.serialize(leaderboard); - jsonLeaderBoards.add(jsonLeaderboard); - } - return jsonLeaderBoards; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/LeaderboardMasterDataJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/LeaderboardMasterDataJsonSerializer.java deleted file mode 100644 index d75cbf1700a..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/LeaderboardMasterDataJsonSerializer.java +++ /dev/null @@ -1,339 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.masterdata.impl; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.UUID; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.CourseArea; -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.RaceColumn; -import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; -import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; -import com.sap.sailing.domain.leaderboard.Leaderboard; -import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; -import com.sap.sailing.domain.leaderboard.ResultDiscardingRule; -import com.sap.sailing.domain.leaderboard.ScoringScheme; -import com.sap.sailing.domain.leaderboard.SettableScoreCorrection; -import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; -import com.sap.sailing.domain.racelog.RaceLog; -import com.sap.sailing.domain.racelog.RaceLogEvent; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; - -public class LeaderboardMasterDataJsonSerializer implements JsonSerializer { - - public static final String FIELD_FOR_RACE_COLUMNS = "forRaceColumns"; - public static final String FIELD_TIME_POINT = "timePoint"; - public static final String FIELD_COMMENT = "comment"; - public static final String FIELD_MAX_POINTS_REASON = "maxPointsReason"; - public static final String FIELD_EXPLICIT_SCORE_CORRECTION = "explicitScoreCorrection"; - public static final String FIELD_FOR_COMPETITORS = "forCompetitors"; - public static final String FIELD_RACE_COLUMN_NAME = "raceColumnName"; - public static final String FIELD_RACE_COLUMNS = "raceColumns"; - public static final String FIELD_COMPETITORS = "competitors"; - public static final String FIELD_NAME = "name"; - public static final String FIELD_SCORE_CORRECTION = "scoreCorrection"; - public static final String FIELD_SCORING_SCHEME = "scoringScheme"; - public static final String FIELD_TYPE = "type"; - public static final String FIELD_REGATTA_LEADERBOARD = "regattaLeaderboard"; - public static final String FIELD_META_LEADERBOARD = "metaLeaderboard"; - public static final String FIELD_RESULT_DISCARDING_RULE = "resultDiscardingRule"; - public static final String FIELD_INDICES = "indices"; - public static final String FIELD_COURSE_AREA = "courseArea"; - public static final String FIELD_ID = "id"; - public static final String FIELD_REGATTA_NAME = "regattaName"; - public static final String FIELD_DISPLAY_NAME = "displayName"; - public static final String FIELD_COMPETITOR_ID = "competitorId"; - public static final String FIELD_CARRIED_POINTS = "carriedPoints"; - public static final String FIELD_CARRIED = "carried"; - public static final String FIELD_SUPPRESSED_COMPETITORS = "suppressedCompetitors"; - public static final String FIELD_COMPETITOR_DISPLAY_NAMES = "competitorDisplayNames"; - public static final String FIELD_RACE_LOG_EVENTS = "raceLogEvents"; - public static final String FIELD_FLEETS = "fleets"; - public static final String FIELD_FLEET_NAME = "fleetName"; - - private final JsonSerializer competitorSerializer; - private final JsonSerializer raceColumnSerializer; - private final JsonSerializer raceLogEventSerializer; - private final Set competitors = new HashSet(); - - /* - * TODO This is a hack to "remember" the course areas to allow finding the events which own the course areas. This - * way regatta leaderboard can be completely exported, because all events, their regattas, etc can be exported too. - * Their should be a proper connection between regatta and event soon. - */ - private final Set courseAreaIds = new HashSet(); - - private final Set regattas = new HashSet(); - - public LeaderboardMasterDataJsonSerializer(JsonSerializer competitorSerializer, - JsonSerializer raceColumnSerializer, JsonSerializer raceLogEventSerializer) { - this.competitorSerializer = competitorSerializer; - this.raceColumnSerializer = raceColumnSerializer; - this.raceLogEventSerializer = raceLogEventSerializer; - } - - @Override - public JSONObject serialize(Leaderboard leaderboard) { - if (leaderboard == null) { - return null; - } - JSONObject jsonLeaderboard = new JSONObject(); - jsonLeaderboard.put(FIELD_NAME, leaderboard.getName()); - jsonLeaderboard.put(FIELD_SCORE_CORRECTION, createJsonForScoreCorrection(leaderboard)); - jsonLeaderboard.put(FIELD_CARRIED_POINTS, createJsonArrayForCarriedPoints(leaderboard)); - jsonLeaderboard.put(FIELD_RESULT_DISCARDING_RULE, - createJsonForResultDiscardingRule(leaderboard.getResultDiscardingRule())); - jsonLeaderboard.put(FIELD_DISPLAY_NAME, leaderboard.getDisplayName()); - jsonLeaderboard.put(FIELD_RACE_LOG_EVENTS, createJsonArrayForRaceLogEventsPerRaceColumn(leaderboard)); - boolean isRegattaLeaderboard = false; - if (leaderboard instanceof FlexibleLeaderboard) { - FlexibleLeaderboard flexibleLeaderboard = (FlexibleLeaderboard) leaderboard; - jsonLeaderboard.put(FIELD_SCORING_SCHEME, createJsonForScoringScheme(leaderboard.getScoringScheme())); - jsonLeaderboard.put(FIELD_COURSE_AREA, createJsonForCourseArea(flexibleLeaderboard.getDefaultCourseArea())); - jsonLeaderboard.put(FIELD_RACE_COLUMNS, createJsonArrayForRaceColumns(leaderboard.getRaceColumns())); - } else if (leaderboard instanceof RegattaLeaderboard) { - RegattaLeaderboard regattaLeaderboard = (RegattaLeaderboard) leaderboard; - jsonLeaderboard.put(FIELD_REGATTA_NAME, regattaLeaderboard.getRegatta().getName()); - CourseArea courseArea = regattaLeaderboard.getRegatta().getDefaultCourseArea(); - if (courseArea != null) { - courseAreaIds.add(courseArea.getId().toString()); - } - regattas.add(regattaLeaderboard.getRegatta()); - isRegattaLeaderboard = true; - } - jsonLeaderboard.put(FIELD_REGATTA_LEADERBOARD, isRegattaLeaderboard); - jsonLeaderboard.put(FIELD_SUPPRESSED_COMPETITORS, - createJsonArrayForSuppressedCompetitors(leaderboard.getSuppressedCompetitors())); - - competitors.addAll(makeCollection(leaderboard.getAllCompetitors())); - jsonLeaderboard.put(FIELD_COMPETITOR_DISPLAY_NAMES, createJsonArrayForCompetitorDisplayNames(leaderboard)); - jsonLeaderboard.put(FIELD_COMPETITORS, createJsonArrayForCompetitors()); - return jsonLeaderboard; - } - - private JSONArray createJsonArrayForRaceLogEventsPerRaceColumn(Leaderboard leaderboard) { - JSONArray array = new JSONArray(); - for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { - JSONObject raceColumnRaceLogJson = new JSONObject(); - raceColumnRaceLogJson.put(FIELD_RACE_COLUMN_NAME, raceColumn.getName()); - raceColumnRaceLogJson.put(FIELD_FLEETS, createJsonArrayForRaceLogEventsForFleets(raceColumn)); - array.add(raceColumnRaceLogJson); - } - return array; - } - - private JSONArray createJsonArrayForRaceLogEventsForFleets(RaceColumn raceColumn) { - JSONArray array = new JSONArray(); - for (Fleet fleet : raceColumn.getFleets()) { - JSONObject fleetRaceLogJson = new JSONObject(); - fleetRaceLogJson.put(FIELD_FLEET_NAME, fleet.getName()); - fleetRaceLogJson.put(FIELD_RACE_LOG_EVENTS, createRaceLogEventsForFleet(raceColumn, fleet)); - array.add(fleetRaceLogJson); - } - return array; - } - - private JSONArray createRaceLogEventsForFleet(RaceColumn raceColumn, Fleet fleet) { - JSONArray array = new JSONArray(); - RaceLog raceLog = raceColumn.getRaceLog(fleet); - if (raceLog != null) { - raceLog.lockForRead(); - try { - for (RaceLogEvent event : raceLog.getRawFixes()) { - array.add(raceLogEventSerializer.serialize(event)); - } - } finally { - raceLog.unlockAfterRead(); - } - } - return array; - } - - private JSONArray createJsonArrayForCompetitorDisplayNames(Leaderboard leaderboard) { - JSONArray array = new JSONArray(); - for (Competitor competitor : competitors) { - String displayName = leaderboard.getDisplayName(competitor); - if (displayName != null) { - JSONObject displayNameJson = new JSONObject(); - addCompetitorId(competitor, displayNameJson); - displayNameJson.put(FIELD_DISPLAY_NAME, displayName); - array.add(displayNameJson); - } - } - return array; - } - - private JSONArray createJsonArrayForSuppressedCompetitors(Iterable suppressedCompetitors) { - competitors.addAll(makeCollection(suppressedCompetitors)); - JSONArray array = new JSONArray(); - for (Competitor competitor : suppressedCompetitors) { - JSONObject obj = new JSONObject(); - addCompetitorId(competitor, obj); - array.add(obj); - } - return array; - } - - private void addCompetitorId(Competitor competitor, JSONObject obj) { - // Special treatment for UUIDs. They are represented as String because JSON doesn't have a way to represent - // them otherwise. However, other, e.g., numeric, types used to encode a serializable ID must be preserved - // according to JSON semantics. Also see the corresponding case distinction in the deserialized which first - // tries to parse a string as a UUID becore returning the ID as is. - obj.put(FIELD_TYPE, competitor.getId().getClass().getName()); - Serializable competitorId = competitor.getId() instanceof UUID ? competitor.getId().toString() : competitor - .getId(); - obj.put(FIELD_COMPETITOR_ID, competitorId); - } - - private JSONArray createJsonArrayForCarriedPoints(Leaderboard leaderboard) { - JSONArray jsonArray = new JSONArray(); - Map competitorsWithCarriedPoints = leaderboard - .getCompetitorsForWhichThereAreCarriedPoints(); - competitors.addAll(competitorsWithCarriedPoints.keySet()); - for (Entry entry : competitorsWithCarriedPoints.entrySet()) { - Double carriedPoints = entry.getValue(); - if (carriedPoints != 0) { - jsonArray.add(createJsonForCarriedPoints(entry.getKey(), carriedPoints)); - } - } - return jsonArray; - } - - private JSONObject createJsonForCarriedPoints(Competitor competitor, double carriedPoints) { - JSONObject jsonObject = new JSONObject(); - addCompetitorId(competitor, jsonObject); - jsonObject.put(FIELD_CARRIED, carriedPoints); - return jsonObject; - } - - private JSONObject createJsonForCourseArea(CourseArea defaultCourseArea) { - if (defaultCourseArea == null) { - return null; - } - JSONObject result = new JSONObject(); - result.put(FIELD_ID, defaultCourseArea.getId()); - result.put(FIELD_NAME, defaultCourseArea.getName()); - return null; - } - - public static JSONObject createJsonForResultDiscardingRule(ResultDiscardingRule resultDiscardingRule) { - JSONObject result = new JSONObject(); - if (resultDiscardingRule instanceof ThresholdBasedResultDiscardingRule) { - ThresholdBasedResultDiscardingRule rule = (ThresholdBasedResultDiscardingRule) resultDiscardingRule; - JSONArray indices = new JSONArray(); - int[] rawValues = rule.getDiscardIndexResultsStartingWithHowManyRaces(); - for (int i = 0; i < rawValues.length; i++) { - indices.add(new Integer(rawValues[i])); - } - result.put(FIELD_INDICES, indices); - } - return result; - } - - public static JSONObject createJsonForScoringScheme(ScoringScheme scoringScheme) { - JSONObject result = new JSONObject(); - result.put(FIELD_TYPE, scoringScheme.getType().name()); - return result; - } - - private JSONArray createJsonArrayForRaceColumns(Iterable raceColumns) { - JSONArray jsonRaceColumns = new JSONArray(); - for (RaceColumn raceColumn : raceColumns) { - JSONObject jsonRaceColumn = raceColumnSerializer.serialize(raceColumn); - jsonRaceColumns.add(jsonRaceColumn); - } - return jsonRaceColumns; - } - - private JSONArray createJsonArrayForCompetitors() { - JSONArray jsonCompetitors = new JSONArray(); - for (Competitor competitor : competitors) { - JSONObject jsonCompetitor = competitorSerializer.serialize(competitor); - jsonCompetitors.add(jsonCompetitor); - } - return jsonCompetitors; - } - - private JSONObject createJsonForScoreCorrection(Leaderboard leaderboard) { - SettableScoreCorrection correction = leaderboard.getScoreCorrection(); - JSONObject jsonScoreCorrection = new JSONObject(); - jsonScoreCorrection.put(FIELD_COMMENT, correction.getComment()); - if (correction.getTimePointOfLastCorrectionsValidity() != null) { - jsonScoreCorrection.put(FIELD_TIME_POINT, correction.getTimePointOfLastCorrectionsValidity().asMillis()); - } else { - jsonScoreCorrection.put(FIELD_TIME_POINT, null); - } - - jsonScoreCorrection.put(FIELD_FOR_RACE_COLUMNS, - createJSONArrayForScoreCorrectionsForRaceColumns(correction, leaderboard)); - - return jsonScoreCorrection; - } - - private JSONArray createJSONArrayForScoreCorrectionsForRaceColumns(SettableScoreCorrection correction, - Leaderboard leaderboard) { - JSONArray scoreCorrectionsForRaceColumns = new JSONArray(); - for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { - if (correction.hasCorrectionFor(raceColumn)) { - JSONObject scoreCorrectionsForRaceColumn = new JSONObject(); - scoreCorrectionsForRaceColumn.put(FIELD_RACE_COLUMN_NAME, raceColumn.getName()); - scoreCorrectionsForRaceColumn.put(FIELD_FOR_COMPETITORS, - createJsonForScoreCorrectionsForRaceColumnAndCompetitors(correction, raceColumn, leaderboard)); - scoreCorrectionsForRaceColumns.add(scoreCorrectionsForRaceColumn); - } - - } - - return scoreCorrectionsForRaceColumns; - } - - private JSONArray createJsonForScoreCorrectionsForRaceColumnAndCompetitors(SettableScoreCorrection correction, - RaceColumn raceColumn, Leaderboard leaderboard) { - JSONArray scoreCorrectionsForCompetitors = new JSONArray(); - Iterable competitorsThatHaveCorrectionsIn = correction - .getCompetitorsThatHaveCorrectionsIn(raceColumn); - competitors.addAll(makeCollection(competitorsThatHaveCorrectionsIn)); - for (Competitor competitor : competitorsThatHaveCorrectionsIn) { - // TODO bug 655: score corrections shall be time dependent - final MillisecondsTimePoint now = MillisecondsTimePoint.now(); - if (correction.isScoreCorrected(competitor, raceColumn, now)) { - JSONObject scoreCorrectionForCompetitor = new JSONObject(); - scoreCorrectionForCompetitor.put(FIELD_EXPLICIT_SCORE_CORRECTION, - correction.getExplicitScoreCorrection(competitor, raceColumn)); - scoreCorrectionForCompetitor.put(FIELD_MAX_POINTS_REASON, - correction.getMaxPointsReason(competitor, raceColumn, now).toString()); - addCompetitorId(competitor, scoreCorrectionForCompetitor); - scoreCorrectionsForCompetitors.add(scoreCorrectionForCompetitor); - } - } - - return scoreCorrectionsForCompetitors; - } - - public Set getCourseAreaIds() { - return courseAreaIds; - } - - public Iterable getRegattas() { - return regattas; - } - - public static Collection makeCollection(Iterable iter) { - Collection list = new ArrayList(); - for (E item : iter) { - list.add(item); - } - return list; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/MediaTrackJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/MediaTrackJsonSerializer.java deleted file mode 100644 index 7d9dcb3da2e..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/MediaTrackJsonSerializer.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.masterdata.impl; - -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.common.media.MediaTrack; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; - -public class MediaTrackJsonSerializer implements JsonSerializer { - - public static final String FIELD_DB_ID = "dbId"; - public static final String FIELD_DURATION = "duration"; - public static final String FIELD_MIME_TYPE = "mimeType"; - public static final String FIELD_START_TIME = "startTime"; - public static final String FIELD_STATUS = "status"; - public static final String FIELD_TITLE = "title"; - public static final String FIELD_URL = "url"; - - @Override - public JSONObject serialize(MediaTrack mediaTrack) { - JSONObject result = new JSONObject(); - result.put(FIELD_DB_ID, mediaTrack.dbId); - result.put(FIELD_DURATION, mediaTrack.durationInMillis); - result.put(FIELD_MIME_TYPE, mediaTrack.mimeType.name()); - result.put(FIELD_START_TIME, mediaTrack.startTime.getTime()); - result.put(FIELD_STATUS, mediaTrack.status.name()); - result.put(FIELD_TITLE, mediaTrack.title); - result.put(FIELD_URL, mediaTrack.url); - return result; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/RaceColumnMasterDataJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/RaceColumnMasterDataJsonSerializer.java deleted file mode 100644 index f0c8b721367..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/RaceColumnMasterDataJsonSerializer.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.masterdata.impl; - -import java.io.Serializable; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.RaceColumn; -import com.sap.sailing.domain.common.RaceIdentifier; -import com.sap.sailing.domain.common.WindSource; -import com.sap.sailing.domain.tracking.TrackedRace; -import com.sap.sailing.domain.tracking.WindTrack; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; - -public class RaceColumnMasterDataJsonSerializer implements JsonSerializer { - - public static final String FIELD_MEDAL_RACE = "medalRace"; - public static final String FIELD_NAME = "name"; - public static final String FIELD_RACE_IDENTIFIERS = "raceIdentifiers"; - public static final String FIELD_FLEET_NAME = "fleetName"; - public static final String FIELD_RACE_NAME = "raceName"; - public static final String FIELD_REGATTA_NAME = "regattaName"; - public static final String FIELD_FACTOR = "factor"; - public static final String FIELD_WIND = "wind"; - - @Override - public JSONObject serialize(RaceColumn raceColumn) { - JSONObject jsonRaceColumn = new JSONObject(); - jsonRaceColumn.put(FIELD_NAME, raceColumn.getName()); - jsonRaceColumn.put(FIELD_MEDAL_RACE, raceColumn.isMedalRace()); - jsonRaceColumn.put(FIELD_FACTOR, raceColumn.getExplicitFactor()); - JSONArray raceIdentifiers = new JSONArray(); - jsonRaceColumn.put(FIELD_RACE_IDENTIFIERS, raceIdentifiers); - for (Fleet fleet : raceColumn.getFleets()) { - RaceIdentifier raceIdentifierForFleet = raceColumn.getRaceIdentifier(fleet); - if (raceIdentifierForFleet != null) { - JSONObject jsonRaceIdentifierForFleet = new JSONObject(); - jsonRaceIdentifierForFleet.put(FIELD_FLEET_NAME, fleet.getName()); - jsonRaceIdentifierForFleet.put(FIELD_RACE_NAME, raceIdentifierForFleet.getRaceName()); - jsonRaceIdentifierForFleet.put(FIELD_REGATTA_NAME, raceIdentifierForFleet.getRegattaName()); - raceIdentifiers.add(jsonRaceIdentifierForFleet); - } - TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); - if (trackedRace != null) { - jsonRaceColumn.put(FIELD_WIND, serializeWindInformation(trackedRace)); - } - } - return jsonRaceColumn; - } - - private JSONArray serializeWindInformation(TrackedRace trackedRace) { - JSONArray jsonWindInfo = new JSONArray(); - Iterable windSources = trackedRace.getWindSources(); - String raceName = trackedRace.getRace().getName(); - Serializable raceId = trackedRace.getRace().getId(); - String regattaName = trackedRace.getTrackedRegatta().getRegatta().getName(); - if (windSources != null) { - for (WindSource source : windSources) { - if (source.canBeStored()) { - WindTrack track = trackedRace.getOrCreateWindTrack(source); - JsonSerializer windtrackSerializer = new WindTrackMasterDataJsonSerializer(source, - regattaName, raceName, raceId); - jsonWindInfo.add(windtrackSerializer.serialize(track)); - } - } - } - return jsonWindInfo; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/RegattaMasterDataJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/RegattaMasterDataJsonSerializer.java deleted file mode 100644 index 829bdcb9b3e..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/RegattaMasterDataJsonSerializer.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.masterdata.impl; - -import java.io.Serializable; -import java.util.Map.Entry; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.CourseArea; -import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.RaceColumn; -import com.sap.sailing.domain.base.RaceColumnInSeries; -import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.base.Series; -import com.sap.sailing.domain.base.configuration.RegattaConfiguration; -import com.sap.sailing.domain.common.RegattaName; -import com.sap.sailing.domain.leaderboard.ResultDiscardingRule; -import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; - -public class RegattaMasterDataJsonSerializer implements JsonSerializer { - - public static final String FIELD_ID = "id"; - public static final String FIELD_ID_TYPE = "idType"; - public static final String FIELD_NAME = "name"; - public static final String FIELD_BASE_NAME = "baseName"; - public static final String FIELD_REGATTAS = "regattas"; - public static final String FIELD_BOAT_CLASS_NAME = "boatClass"; - public static final String FIELD_DEFAULT_COURSE_AREA_ID = "defaultCourseAreaId"; - public static final String FIELD_REGATTA_CONFIGURATION = "procedures"; - public static final String FIELD_SCORING_SCHEME_TYPE = "scoringSchemeType"; - public static final String FIELD_SERIES = "series"; - public static final String FIELD_RACE_COLUMNS = "raceColumns"; - public static final String FIELD_IS_MEDAL = "isMedal"; - public static final String FIELD_FLEETS = "fleets"; - public static final String FIELD_IS_PERSISTENT = "isPersistent"; - public static final String FIELD_REGATTA_NAME = "regattaName"; - public static final String FIELD_RESULT_DISCARDING_RULE = "resultDiscardingRule"; - public static final String FIELD_INDICES = "indices"; - public static final String FIELD_REGATTA_RACE_IDS = "regattaRaceIds"; - - private final JsonSerializer fleetSerializer; - private final JsonSerializer raceColumnSerializer; - private final JsonSerializer configurationSerializer; - private final ConcurrentHashMap regattaForRaceIdStrings; - - public RegattaMasterDataJsonSerializer(JsonSerializer fleetSerializer, - JsonSerializer raceColumnSerializer, - JsonSerializer configurationSerializer, - ConcurrentHashMap regattaForRaceIdStrings) { - this.fleetSerializer = fleetSerializer; - this.raceColumnSerializer = raceColumnSerializer; - this.configurationSerializer = configurationSerializer; - this.regattaForRaceIdStrings = regattaForRaceIdStrings; - } - - @Override - public JSONObject serialize(Regatta regatta) { - return createJsonForRegatta(regatta); - } - - private JSONObject createJsonForRegatta(Regatta regatta) { - JSONObject result = new JSONObject(); - // Special treatment for UUIDs. They are represented as String because JSON doesn't have a way to represent them - // otherwise. However, other, e.g., numeric, types used to encode a serializable ID must be preserved according - // to JSON semantics. - // Also see the corresponding case distinction in the deserialized which first tries to parse a string as a UUID - // becore returning the ID as is. - result.put(FIELD_ID_TYPE, regatta.getId().getClass().getName()); - Serializable regattaId = regatta.getId() instanceof UUID ? regatta.getId().toString() : regatta.getId(); - result.put(FIELD_ID, regattaId); - result.put(FIELD_BASE_NAME, regatta.getBaseName()); - result.put(FIELD_BOAT_CLASS_NAME, regatta.getBoatClass().getName()); - CourseArea defaultCourseArea = regatta.getDefaultCourseArea(); - if (defaultCourseArea != null) { - result.put(FIELD_DEFAULT_COURSE_AREA_ID, defaultCourseArea.getId().toString()); - } else { - result.put(FIELD_DEFAULT_COURSE_AREA_ID, null); - } - if (regatta.getRegattaConfiguration() != null) { - result.put(FIELD_REGATTA_CONFIGURATION, - configurationSerializer.serialize(regatta.getRegattaConfiguration())); - } - - result.put(FIELD_SCORING_SCHEME_TYPE, regatta.getScoringScheme().getType().toString()); - result.put(FIELD_SERIES, createJsonArrayForSeries(regatta.getSeries())); - result.put(FIELD_IS_PERSISTENT, regatta.isPersistent()); - result.put(FIELD_REGATTA_NAME, ((RegattaName) regatta.getRegattaIdentifier()).getRegattaName()); - result.put(FIELD_REGATTA_RACE_IDS, createJsonArrayForRaceIdStrings(regatta)); - return result; - } - - private JSONArray createJsonArrayForRaceIdStrings(Regatta regatta) { - JSONArray result = new JSONArray(); - for (Entry entry: regattaForRaceIdStrings.entrySet()) { - if (entry.getValue() == regatta) { - result.add(entry.getKey()); - } - } - return result; - } - - private JSONArray createJsonArrayForSeries(Iterable series) { - JSONArray array = new JSONArray(); - for (Series oneSeries : series) { - array.add(createJsonForSeries(oneSeries)); - } - return array; - } - - private JSONObject createJsonForSeries(Series series) { - JSONObject result = new JSONObject(); - result.put(FIELD_NAME, series.getName()); - result.put(FIELD_IS_MEDAL, series.isMedal()); - result.put(FIELD_FLEETS, createJsonArrayForFleets(series.getFleets())); - result.put(FIELD_RACE_COLUMNS, createJsonArrayForRaceColumns(series.getRaceColumns())); - result.put(FIELD_RESULT_DISCARDING_RULE, createJsonForResultDiscardingRule(series.getResultDiscardingRule())); - return result; - } - - private JSONObject createJsonForResultDiscardingRule(ResultDiscardingRule resultDiscardingRule) { - if (resultDiscardingRule == null) { - return null; - } - JSONObject result = new JSONObject(); - if (resultDiscardingRule instanceof ThresholdBasedResultDiscardingRule) { - ThresholdBasedResultDiscardingRule rule = (ThresholdBasedResultDiscardingRule) resultDiscardingRule; - JSONArray indices = new JSONArray(); - int[] rawValues = rule.getDiscardIndexResultsStartingWithHowManyRaces(); - for (int i = 0; i < rawValues.length; i++) { - indices.add(new Integer(rawValues[i])); - } - result.put(FIELD_INDICES, indices); - } - return result; - } - - private JSONArray createJsonArrayForFleets(Iterable fleets) { - JSONArray array = new JSONArray(); - for (Fleet fleet : fleets) { - array.add(fleetSerializer.serialize(fleet)); - } - return array; - } - - private JSONArray createJsonArrayForRaceColumns(Iterable raceColumns) { - JSONArray array = new JSONArray(); - for (RaceColumnInSeries raceColumn : raceColumns) { - array.add(createJsonForRaceColumn(raceColumn)); - } - return array; - } - - private JSONObject createJsonForRaceColumn(RaceColumnInSeries raceColumn) { - return raceColumnSerializer.serialize(raceColumn); - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/TopLevelMasterDataSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/TopLevelMasterDataSerializer.java deleted file mode 100644 index bf65d736bd8..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/TopLevelMasterDataSerializer.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.masterdata.impl; - -import java.util.Collection; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.base.Event; -import com.sap.sailing.domain.base.Regatta; -import com.sap.sailing.domain.common.media.MediaTrack; -import com.sap.sailing.domain.leaderboard.LeaderboardGroup; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; - -/** - * Will take care of serializing all master data connected to a set of leaderboard groups. They - * are identified in {@link #serialize(Set)}. The serializer must be created with a reference to all - * leaderboard groups and all events, so that all necessary data can be found and serialized. - * - * @author Frederik Petersen (D054528) - * - */ -public class TopLevelMasterDataSerializer { - - public static final String FIELD_PER_LG = "perLg"; - public static final String FIELD_MEDIA = "media"; - private final Map allLeaderboardGroups; - private final Iterable allEvents; - private final ConcurrentHashMap regattaForRaceIdStrings; - private final Collection allMediaTracks; - - private final JsonSerializer mediaTrackSerializer; - - public TopLevelMasterDataSerializer(Map allLeaderboardGroups, Iterable allEvents, - ConcurrentHashMap regattaForRaceIdString, Collection allMediaTracks) { - this.allLeaderboardGroups = allLeaderboardGroups; - this.allEvents = allEvents; - this.regattaForRaceIdStrings = regattaForRaceIdString; - this.allMediaTracks = allMediaTracks; - mediaTrackSerializer = new MediaTrackJsonSerializer(); - } - - public JSONObject serialize(Set requestedLeaderboardGroupNames) { - JSONObject masterData = new JSONObject(); - - JSONArray masterDataPerLg = new JSONArray(); - - for (String name : requestedLeaderboardGroupNames) { - LeaderboardGroup leaderboardGroup = allLeaderboardGroups.get(name); - if (leaderboardGroup == null) { - continue; - } - JsonSerializer serializer = new LeaderboardGroupMasterDataJsonSerializer(allEvents, regattaForRaceIdStrings); - masterDataPerLg.add(serializer.serialize(leaderboardGroup)); - } - masterData.put(FIELD_PER_LG, masterDataPerLg); - masterData.put(FIELD_MEDIA, createJsonArrayForMediaTracks()); - - return masterData; - } - - private JSONArray createJsonArrayForMediaTracks() { - JSONArray array = new JSONArray(); - for (MediaTrack mediaTrack : allMediaTracks) { - array.add(mediaTrackSerializer.serialize(mediaTrack)); - } - return array; - } - -} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/WindTrackMasterDataJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/WindTrackMasterDataJsonSerializer.java deleted file mode 100644 index d891b326f7e..00000000000 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/masterdata/impl/WindTrackMasterDataJsonSerializer.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.sap.sailing.server.gateway.serialization.masterdata.impl; - -import java.io.Serializable; -import java.util.UUID; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.common.Position; -import com.sap.sailing.domain.common.WindSource; -import com.sap.sailing.domain.tracking.Wind; -import com.sap.sailing.domain.tracking.WindTrack; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.PositionJsonSerializer; -import com.sap.sailing.server.gateway.serialization.impl.WindJsonSerializer; - -public class WindTrackMasterDataJsonSerializer implements JsonSerializer{ - - public static final String FIELD_WIND_SOURCE_TYPE = "windSourceType"; - public static final String FIELD_WIND_SOURCE_ID = "windSourceId"; - public static final String FIELD_FIXES = "fixes"; - public static final String FIELD_RACE_NAME = "raceName"; - public static final String FIELD_RACE_ID = "raceId"; - public static final String FIELD_ID_TYPE = "idType"; - public static final String FIELD_REGATTA_NAME = "regattaName"; - - - private final WindSource source; - private final JsonSerializer windSerializer; - private final String regattaName; - private final String raceName; - private final Serializable raceId; - - public WindTrackMasterDataJsonSerializer(WindSource source, String regattaName, String raceName, Serializable raceId) { - this.source = source; - this.regattaName = regattaName; - this.raceName = raceName; - this.raceId = raceId; - JsonSerializer positionSerializer = new PositionJsonSerializer(); - this.windSerializer = new WindJsonSerializer(positionSerializer); - } - - @Override - public JSONObject serialize(WindTrack windTrack) { - JSONObject windTrackJson = new JSONObject(); - windTrack.lockForRead(); - try { - windTrackJson.put(FIELD_WIND_SOURCE_TYPE, source.getType().name()); - if (source.getId() != null) { - windTrackJson.put(FIELD_WIND_SOURCE_ID, source.getId().toString()); - } - windTrackJson.put(FIELD_RACE_NAME, raceName); - if (raceId != null) { - // Special treatment for UUIDs. They are represented as String because JSON doesn't have a way to - // otherwise. However, other, e.g., numeric, types used to encode a serializable ID must be preserved - // to JSON semantics. Also see the corresponding case distinction in the deserialized which first tries - // to parse a string as a UUID becore returning the ID as is. - windTrackJson.put(FIELD_ID_TYPE, raceId.getClass().getName()); - Serializable raceIdAdapted = raceId instanceof UUID ? raceId.toString() : raceId; - windTrackJson.put(FIELD_RACE_ID, raceIdAdapted); - } - windTrackJson.put(FIELD_REGATTA_NAME, regattaName); - JSONArray fixes = new JSONArray(); - Iterable fixesIterator = windTrack.getFixes(); - for (Wind wind : fixesIterator) { - fixes.add(windSerializer.serialize(wind)); - } - windTrackJson.put(FIELD_FIXES, fixes); - } finally { - windTrack.unlockAfterRead(); - } - return windTrackJson; - } - -} diff --git a/java/com.sap.sailing.server.gateway/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.gateway/META-INF/MANIFEST.MF index 704bfd0524f..0adf9eb7260 100644 --- a/java/com.sap.sailing.server.gateway/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.gateway/META-INF/MANIFEST.MF @@ -6,7 +6,6 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Import-Package: com.sap.sailing.server, - com.sap.sailing.server.gateway.masterdata, com.sap.sailing.server.operationaltransformation, javax.ws.rs;version="1.1.1", javax.ws.rs.core;version="1.1.1", diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/MasterDataResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/MasterDataResource.java index 47e30b2c674..a98deda1b85 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/MasterDataResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/MasterDataResource.java @@ -22,8 +22,8 @@ import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.core.StreamingOutput; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; +import com.sap.sailing.domain.masterdataimport.TopLevelMasterData; import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource; -import com.sap.sailing.server.gateway.masterdata.TopLevelMasterData; @Path("/v1/masterdata") public class MasterDataResource extends AbstractSailingServerResource { diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/LeaderboardGroupsStructureResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/LeaderboardGroupsStructureResource.java deleted file mode 100644 index fbaa684bfe7..00000000000 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/LeaderboardGroupsStructureResource.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.sap.sailing.server.gateway.jaxrs.spi; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.json.simple.JSONObject; - -import com.sap.sailing.domain.leaderboard.LeaderboardGroup; -import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource; -import com.sap.sailing.server.gateway.serialization.masterdata.impl.TopLevelMasterDataSerializer; - -@Path("/v1/leaderboardgroups/structure") -public class LeaderboardGroupsStructureResource extends AbstractSailingServerResource { - - @GET - @Produces("application/json;charset=UTF-8") - public Response getStructureOfLeaderboardGroups(@QueryParam("names") List leaderboardGroupNames) { - Map leaderboardGroups = getService().getLeaderboardGroups(); - Set requestedLeaderboardGroupNames = new HashSet(); - - if (leaderboardGroupNames != null && !leaderboardGroupNames.isEmpty()) { - requestedLeaderboardGroupNames.addAll(leaderboardGroupNames); - } else { - // No range supplied. Export all for now - requestedLeaderboardGroupNames.addAll(leaderboardGroups.keySet()); - } - - TopLevelMasterDataSerializer masterSerializer = new TopLevelMasterDataSerializer(leaderboardGroups, - getService().getAllEvents(), getService().getPersistentRegattasForRaceIDs(), getService().getAllMediaTracks()); - - JSONObject masterData = masterSerializer.serialize(requestedLeaderboardGroupNames); - - String json = masterData.toJSONString(); - return Response.ok(json, MediaType.APPLICATION_JSON).build(); - } -} - \ No newline at end of file diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/RestSpiApplication.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/RestSpiApplication.java index c84e93abd84..8e4dd0f7cad 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/RestSpiApplication.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/spi/RestSpiApplication.java @@ -9,7 +9,6 @@ import javax.ws.rs.core.Application; public class RestSpiApplication extends Application { public Set> getClasses() { HashSet> classes = new HashSet<>(); - classes.add(LeaderboardGroupsStructureResource.class); return classes; } diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java index ea86da20161..18ec6467680 100755 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java @@ -75,6 +75,7 @@ import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl; import com.sap.sailing.domain.leaderboard.impl.LowPoint; import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard; +import com.sap.sailing.domain.masterdataimport.TopLevelMasterData; import com.sap.sailing.domain.persistence.PersistenceFactory; import com.sap.sailing.domain.persistence.media.MediaDBFactory; import com.sap.sailing.domain.racelog.CompetitorResults; @@ -92,7 +93,6 @@ import com.sap.sailing.domain.tracking.impl.EmptyWindStore; import com.sap.sailing.domain.tracking.impl.WindImpl; import com.sap.sailing.mongodb.MongoDBService; import com.sap.sailing.server.RacingEventService; -import com.sap.sailing.server.gateway.masterdata.TopLevelMasterData; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.server.masterdata.MasterDataImporter; import com.sap.sailing.server.operationaltransformation.DummyTrackedRace; diff --git a/java/com.sap.sailing.server/META-INF/MANIFEST.MF b/java/com.sap.sailing.server/META-INF/MANIFEST.MF index 582cdd10bf7..8df8d757422 100755 --- a/java/com.sap.sailing.server/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server/META-INF/MANIFEST.MF @@ -7,9 +7,6 @@ Bundle-Activator: com.sap.sailing.server.impl.Activator Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Import-Package: com.sap.sailing.server.gateway.deserialization, - com.sap.sailing.server.gateway.deserialization.masterdata.impl, - com.sap.sailing.server.gateway.masterdata, - com.sap.sailing.server.gateway.serialization.masterdata.impl, org.json.simple, org.json.simple.parser, org.osgi.framework;version="1.3.0", diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy).launch b/java/com.sap.sailing.server/SailingServer (No Proxy).launch index 865e2f0f13f..1341859a305 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy).launch @@ -32,5 +32,5 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch index 61ec23f3108..e9ea427ee0b 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch @@ -26,6 +26,6 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Monitoring).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Monitoring).launch index c0294b9458a..19babc3036c 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Monitoring).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Monitoring).launch @@ -26,6 +26,6 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch index bb6d969e580..910c4e55241 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch @@ -25,5 +25,5 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy).launch b/java/com.sap.sailing.server/SailingServer (Proxy).launch index 68c5e543a95..d03f2c0bae9 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy).launch @@ -26,6 +26,6 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch index ef0ac0de753..d017174feb0 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch @@ -26,6 +26,6 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch index 035a337ce39..2b2cb6340e4 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch @@ -26,5 +26,5 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch index 39cbe89ea37..00a85f3e5ca 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch @@ -25,5 +25,5 @@ - + diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java index 4e6b612ac03..eb5f2d1d50a 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/MasterDataImporter.java @@ -8,8 +8,8 @@ import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.common.MasterDataImportObjectCreationCount; import com.sap.sailing.domain.common.impl.MasterDataImportObjectCreationCountImpl; import com.sap.sailing.domain.common.media.MediaTrack; +import com.sap.sailing.domain.masterdataimport.TopLevelMasterData; import com.sap.sailing.server.RacingEventService; -import com.sap.sailing.server.gateway.masterdata.TopLevelMasterData; import com.sap.sailing.server.operationaltransformation.ImportMasterDataOperation; public class MasterDataImporter { diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java index 2c7940aea83..9be02686f26 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java @@ -30,6 +30,7 @@ import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard; +import com.sap.sailing.domain.masterdataimport.TopLevelMasterData; import com.sap.sailing.domain.masterdataimport.WindTrackMasterData; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogEvent; @@ -40,7 +41,6 @@ import com.sap.sailing.domain.tracking.Wind; import com.sap.sailing.domain.tracking.WindTrack; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventServiceOperation; -import com.sap.sailing.server.gateway.masterdata.TopLevelMasterData; public class ImportMasterDataOperation extends AbstractRacingEventServiceOperation {