bug6069: interims commit; made SailorProfilePreferences available through com.sap.sailing.server.interfaces

This commit is contained in:
Axel Uhl
2024-11-13 14:23:50 +01:00
parent e93d1371b7
commit 2a614484d8
22 changed files with 80 additions and 25 deletions
@@ -7,6 +7,9 @@ Bundle-Vendor: SAP
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.sap.sailing.geocoding,
com.sap.sailing.server.interfaces,
com.sap.sailing.server.preferences,
com.sap.sse.replication,
com.sap.sse.security,
org.osgi.framework;version="1.7.0"
Export-Package: com.sap.sailing.datamining,
com.sap.sailing.datamining.data,
@@ -4,6 +4,7 @@ import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
import com.sap.sailing.domain.polars.PolarDataService;
import com.sap.sse.datamining.annotations.Connector;
import com.sap.sse.security.SecurityService;
public interface HasLeaderboardGroupContext {
@Connector(messageKey="LeaderboardGroup", ordinal=0)
@@ -12,4 +13,8 @@ public interface HasLeaderboardGroupContext {
PolarDataService getPolarDataService();
DomainFactory getBaseDomainFactory();
SecurityService getSecurityService();
SailorProfiles getSailorProfiles();
}
@@ -0,0 +1,13 @@
package com.sap.sailing.datamining.data;
/**
* A "data mining" view on the current user's sailor profiles as define in the user preferences.
* When constructed, it collects all of the user's sailor profiles and builds a map from the
* {@link Competitor} objects to the {@link SailorProfile} objects that refer to that competitor.
*
* @author Axel Uhl (d043530)
*
*/
public interface SailorProfiles {
}
@@ -30,9 +30,8 @@ public class LeaderboardGroupRetrievalProcessor extends AbstractRetrievalProcess
if (isAborted()) {
break;
}
data.add(new LeaderboardGroupWithContext(leaderboardGroup, polarDataService, element.getBaseDomainFactory()));
data.add(new LeaderboardGroupWithContext(leaderboardGroup, polarDataService, element.getBaseDomainFactory(), element.getSecurityService()));
}
return data;
}
}
@@ -1,19 +1,30 @@
package com.sap.sailing.datamining.impl.data;
import com.sap.sailing.datamining.data.HasLeaderboardGroupContext;
import com.sap.sailing.datamining.data.SailorProfiles;
import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
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;
public class LeaderboardGroupWithContext implements HasLeaderboardGroupContext {
private final LeaderboardGroup leaderboardGroup;
private final PolarDataService polarDataService;
private final DomainFactory baseDomainFactory;
private final SecurityService securityService;
/**
* Access has to be synchronized; it is constructed lazily by the {@link #getSailorProfiles()} method.
*/
private SailorProfiles sailorProfiles;
public LeaderboardGroupWithContext(LeaderboardGroup leaderboardGroup, PolarDataService polarDataService, DomainFactory baseDomainFactory) {
public LeaderboardGroupWithContext(LeaderboardGroup leaderboardGroup, PolarDataService polarDataService, DomainFactory baseDomainFactory, SecurityService securityService) {
this.leaderboardGroup = leaderboardGroup;
this.polarDataService = polarDataService;
this.baseDomainFactory = baseDomainFactory;
this.securityService = securityService;
}
@Override
@@ -30,4 +41,20 @@ public class LeaderboardGroupWithContext implements HasLeaderboardGroupContext {
public DomainFactory getBaseDomainFactory() {
return baseDomainFactory;
}
@Override
public SecurityService getSecurityService() {
return securityService;
}
@Override
public synchronized SailorProfiles getSailorProfiles() {
if (sailorProfiles == null) {
final SailorProfilePreferences sailorProfilePreferences = getSecurityService().getPreferenceObject(getSecurityService().getCurrentUser().getName(), SailorProfilePreferences.PREF_NAME);
for (final SailorProfilePreference sailorProfilePreference : sailorProfilePreferences.getSailorProfiles()) {
}
}
return sailorProfiles;
}
}