mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-21 21:25:38 +00:00
Merge branch 'main' into translation
This commit is contained in:
@@ -10,6 +10,8 @@ Import-Package: com.sap.sailing.geocoding,
|
||||
com.sap.sailing.server.preferences,
|
||||
com.sap.sse.replication,
|
||||
com.sap.sse.security,
|
||||
org.apache.shiro;version="[1.7.0,2.0.0]",
|
||||
org.apache.shiro.subject;version="[1.7.0,2.0.0]",
|
||||
org.osgi.framework;version="1.7.0"
|
||||
Export-Package: com.sap.sailing.datamining,
|
||||
com.sap.sailing.datamining.data,
|
||||
|
||||
+11
-4
@@ -4,6 +4,9 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardContext;
|
||||
import com.sap.sailing.datamining.data.HasRaceResultOfCompetitorContext;
|
||||
import com.sap.sailing.datamining.data.HasTrackedRaceContext;
|
||||
@@ -11,6 +14,7 @@ import com.sap.sailing.datamining.impl.data.RaceResultOfCompetitorWithContext;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class CompetitorOfRaceInLeaderboardRetrievalProcessor
|
||||
extends AbstractRetrievalProcessor<HasTrackedRaceContext, HasRaceResultOfCompetitorContext> {
|
||||
@@ -30,10 +34,13 @@ public class CompetitorOfRaceInLeaderboardRetrievalProcessor
|
||||
if (isAborted()) {
|
||||
break;
|
||||
}
|
||||
HasRaceResultOfCompetitorContext raceResultOfCompetitorContext = new RaceResultOfCompetitorWithContext(
|
||||
leaderboardContext, element.getRaceColumn(), competitor,
|
||||
leaderboardContext.getLeaderboardGroupContext().getPolarDataService(), element);
|
||||
raceResultsOfCompetitor.add(raceResultOfCompetitorContext);
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (subject.isPermitted(competitor.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
HasRaceResultOfCompetitorContext raceResultOfCompetitorContext = new RaceResultOfCompetitorWithContext(
|
||||
leaderboardContext, element.getRaceColumn(), competitor,
|
||||
leaderboardContext.getLeaderboardGroupContext().getPolarDataService(), element);
|
||||
raceResultsOfCompetitor.add(raceResultOfCompetitorContext);
|
||||
}
|
||||
}
|
||||
return raceResultsOfCompetitor;
|
||||
}
|
||||
|
||||
+9
-1
@@ -3,12 +3,16 @@ package com.sap.sailing.datamining.impl.components;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasCompetitorContext;
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardContext;
|
||||
import com.sap.sailing.datamining.impl.data.CompetitorWithContext;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class CompetitorRetrievalProcessor extends AbstractRetrievalProcessor<HasLeaderboardContext, HasCompetitorContext> {
|
||||
public CompetitorRetrievalProcessor(ExecutorService executor,
|
||||
@@ -20,6 +24,10 @@ public class CompetitorRetrievalProcessor extends AbstractRetrievalProcessor<Has
|
||||
|
||||
@Override
|
||||
protected Iterable<HasCompetitorContext> retrieveData(HasLeaderboardContext element) {
|
||||
return Util.map(element.getLeaderboard().getCompetitors(), c->new CompetitorWithContext(c, element));
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
return Util.map(
|
||||
Util.filter(element.getLeaderboard().getCompetitors(),
|
||||
c->subject.isPermitted(c.getIdentifier().getStringPermission(DefaultActions.READ))),
|
||||
c->new CompetitorWithContext(c, element));
|
||||
}
|
||||
}
|
||||
|
||||
+9
-2
@@ -5,6 +5,9 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardGroupContext;
|
||||
import com.sap.sailing.datamining.impl.data.LeaderboardGroupWithContext;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
@@ -12,6 +15,7 @@ import com.sap.sailing.domain.polars.PolarDataService;
|
||||
import com.sap.sailing.server.interfaces.RacingEventService;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class LeaderboardGroupRetrievalProcessor extends AbstractRetrievalProcessor<RacingEventService, HasLeaderboardGroupContext> {
|
||||
|
||||
@@ -26,11 +30,14 @@ public class LeaderboardGroupRetrievalProcessor extends AbstractRetrievalProcess
|
||||
protected Iterable<HasLeaderboardGroupContext> retrieveData(RacingEventService element) {
|
||||
Set<HasLeaderboardGroupContext> data = new HashSet<>();
|
||||
PolarDataService polarDataService = element.getPolarDataService();
|
||||
for (LeaderboardGroup leaderboardGroup : element.getLeaderboardGroups().values()) {
|
||||
for (final LeaderboardGroup leaderboardGroup : element.getLeaderboardGroups().values()) {
|
||||
if (isAborted()) {
|
||||
break;
|
||||
}
|
||||
data.add(new LeaderboardGroupWithContext(leaderboardGroup, polarDataService, element.getBaseDomainFactory(), element.getSecurityService()));
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (subject.isPermitted(leaderboardGroup.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
data.add(new LeaderboardGroupWithContext(leaderboardGroup, polarDataService, element.getBaseDomainFactory(), element.getSecurityService()));
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
+8
-1
@@ -4,12 +4,16 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardContext;
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardGroupContext;
|
||||
import com.sap.sailing.datamining.impl.data.LeaderboardWithContext;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class LeaderboardRetrievalProcessor extends AbstractRetrievalProcessor<HasLeaderboardGroupContext, HasLeaderboardContext> {
|
||||
|
||||
@@ -27,7 +31,10 @@ public class LeaderboardRetrievalProcessor extends AbstractRetrievalProcessor<Ha
|
||||
if (isAborted()) {
|
||||
break;
|
||||
}
|
||||
leaderboardsWithContext.add(new LeaderboardWithContext(leaderboard, element));
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (subject.isPermitted(leaderboard.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
leaderboardsWithContext.add(new LeaderboardWithContext(leaderboard, element));
|
||||
}
|
||||
}
|
||||
return leaderboardsWithContext;
|
||||
}
|
||||
|
||||
+9
-2
@@ -4,6 +4,9 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasRaceOfCompetitorContext;
|
||||
import com.sap.sailing.datamining.data.HasTrackedRaceContext;
|
||||
import com.sap.sailing.datamining.impl.data.RaceOfCompetitorWithContext;
|
||||
@@ -11,6 +14,7 @@ import com.sap.sailing.datamining.shared.TackTypeSegmentsDataMiningSettings;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class RaceOfCompetitorRetrievalProcessor extends AbstractRetrievalProcessor<HasTrackedRaceContext, HasRaceOfCompetitorContext> {
|
||||
/**
|
||||
@@ -37,8 +41,11 @@ public class RaceOfCompetitorRetrievalProcessor extends AbstractRetrievalProcess
|
||||
if (isAborted()) {
|
||||
break;
|
||||
}
|
||||
HasRaceOfCompetitorContext raceOfCompetitorWithContext = new RaceOfCompetitorWithContext(element, competitor, settings);
|
||||
raceOfCompetitorsWithContext.add(raceOfCompetitorWithContext);
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (subject.isPermitted(competitor.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
HasRaceOfCompetitorContext raceOfCompetitorWithContext = new RaceOfCompetitorWithContext(element, competitor, settings);
|
||||
raceOfCompetitorsWithContext.add(raceOfCompetitorWithContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
return raceOfCompetitorsWithContext;
|
||||
|
||||
+12
-5
@@ -4,6 +4,9 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasLeaderboardContext;
|
||||
import com.sap.sailing.datamining.data.HasTrackedRaceContext;
|
||||
import com.sap.sailing.datamining.impl.data.TrackedRaceWithContext;
|
||||
@@ -13,6 +16,7 @@ import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
|
||||
public class TrackedRaceRetrievalProcessor extends AbstractRetrievalProcessor<HasLeaderboardContext, HasTrackedRaceContext> {
|
||||
|
||||
@@ -36,13 +40,17 @@ public class TrackedRaceRetrievalProcessor extends AbstractRetrievalProcessor<Ha
|
||||
break;
|
||||
}
|
||||
TrackedRace trackedRace = raceColumn.getTrackedRace(fleet);
|
||||
if (trackedRace != null) {
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
if (trackedRace != null
|
||||
&& subject.isPermitted(trackedRace.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
Regatta regatta = trackedRace.getTrackedRegatta().getRegatta();
|
||||
HasTrackedRaceContext trackedRaceWithContext = new TrackedRaceWithContext(element, regatta, raceColumn, fleet, trackedRace);
|
||||
trackedRacesWithContext.add(trackedRaceWithContext);
|
||||
if (subject.isPermitted(regatta.getIdentifier().getStringPermission(DefaultActions.READ))) {
|
||||
HasTrackedRaceContext trackedRaceWithContext = new TrackedRaceWithContext(element, regatta, raceColumn, fleet, trackedRace);
|
||||
trackedRacesWithContext.add(trackedRaceWithContext);
|
||||
}
|
||||
}
|
||||
else {
|
||||
//no tracked race found
|
||||
// no tracked race found
|
||||
HasTrackedRaceContext trackedRaceWithContext = new TrackedRaceWithContext(element, /* regatta */ null, raceColumn, fleet, /* trackedRace */ null);
|
||||
trackedRacesWithContext.add(trackedRaceWithContext);
|
||||
}
|
||||
@@ -50,5 +58,4 @@ public class TrackedRaceRetrievalProcessor extends AbstractRetrievalProcessor<Ha
|
||||
}
|
||||
return trackedRacesWithContext;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
-1
@@ -12,6 +12,7 @@ import com.sap.sailing.domain.polars.PolarDataService;
|
||||
import com.sap.sailing.server.preferences.SailorProfilePreference;
|
||||
import com.sap.sailing.server.preferences.SailorProfilePreferences;
|
||||
import com.sap.sse.security.SecurityService;
|
||||
import com.sap.sse.security.shared.impl.User;
|
||||
|
||||
public class LeaderboardGroupWithContext implements HasLeaderboardGroupContext {
|
||||
private final LeaderboardGroup leaderboardGroup;
|
||||
@@ -54,7 +55,11 @@ public class LeaderboardGroupWithContext implements HasLeaderboardGroupContext {
|
||||
@Override
|
||||
public synchronized SailorProfiles getSailorProfiles() {
|
||||
if (sailorProfiles == null) {
|
||||
final SailorProfilePreferences sailorProfilePreferences = getSecurityService().getPreferenceObject(getSecurityService().getCurrentUser().getName(), SailorProfilePreferences.PREF_NAME);
|
||||
final User currentUser = getSecurityService().getCurrentUser();
|
||||
if (currentUser == null) {
|
||||
throw new NullPointerException("No user session in DataMining. Thread pool context problems? You may need to attach a user session to the thread.");
|
||||
}
|
||||
final SailorProfilePreferences sailorProfilePreferences = getSecurityService().getPreferenceObject(currentUser.getName(), SailorProfilePreferences.PREF_NAME);
|
||||
if (sailorProfilePreferences != null) {
|
||||
final List<SailorProfile> theSailorProfiles = new ArrayList<>();
|
||||
for (final SailorProfilePreference sailorProfilePreference : sailorProfilePreferences.getSailorProfiles()) {
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ import com.sap.sailing.datamining.data.SailorProfiles;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
|
||||
public class SailorProfilesImpl implements SailorProfiles {
|
||||
final Map<Competitor, SailorProfile> profilesForCompetitor;
|
||||
private final Map<Competitor, SailorProfile> profilesForCompetitor;
|
||||
|
||||
/**
|
||||
* Constructs the mapping from {@link Competitor} to {@link SailorProfile} based on the
|
||||
|
||||
Reference in New Issue
Block a user