mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-22 20:13:52 +00:00
Notification preferences are now saved to different keys
This commit is contained in:
1 parent
793c2c0341
commit
72aed5a00c
7 files changed
+27
-64
No files matched your search
@@ -32,7 +32,8 @@ import com.sap.sailing.domain.polars.PolarDataService;
|
||||
import com.sap.sailing.server.MasterDataImportClassLoaderService;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.RacingEventServiceMXBean;
|
||||
import com.sap.sailing.server.impl.preferences.model.NotificationPreferences;
|
||||
import com.sap.sailing.server.impl.preferences.model.BoatClassNotificationPreferences;
|
||||
import com.sap.sailing.server.impl.preferences.model.CompetitorNotificationPreferences;
|
||||
import com.sap.sse.common.TypeBasedServiceFinder;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.osgi.CachedOsgiTypeBasedServiceFinderFactory;
|
||||
@@ -152,9 +153,10 @@ public class Activator implements BundleActivator {
|
||||
}
|
||||
|
||||
protected void registerPreferenceConvertersForUserStore(UserStore userStore) {
|
||||
userStore.registerPreferenceConverter(NotificationPreferences.PREF_NAME,
|
||||
new GenericJSONPreferenceConverter<NotificationPreferences>(
|
||||
() -> new NotificationPreferences(racingEventService)));
|
||||
userStore.registerPreferenceConverter(CompetitorNotificationPreferences.PREF_NAME,
|
||||
new GenericJSONPreferenceConverter<>(() -> new CompetitorNotificationPreferences(racingEventService)));
|
||||
userStore.registerPreferenceConverter(BoatClassNotificationPreferences.PREF_NAME,
|
||||
new GenericJSONPreferenceConverter<>(() -> new BoatClassNotificationPreferences(racingEventService)));
|
||||
}
|
||||
|
||||
public void stop(BundleContext context) throws Exception {
|
||||
|
||||
+5
-5
@@ -6,21 +6,21 @@ import java.util.Set;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.server.impl.preferences.model.BoatClassNotificationPreference;
|
||||
import com.sap.sailing.server.impl.preferences.model.NotificationPreferences;
|
||||
import com.sap.sailing.server.impl.preferences.model.BoatClassNotificationPreferences;
|
||||
import com.sap.sse.security.PreferenceObjectBasedNotificationSet;
|
||||
import com.sap.sse.security.UserStore;
|
||||
|
||||
public abstract class AbstractBoatClassNotificationSet
|
||||
extends PreferenceObjectBasedNotificationSet<NotificationPreferences, BoatClass> {
|
||||
extends PreferenceObjectBasedNotificationSet<BoatClassNotificationPreferences, BoatClass> {
|
||||
|
||||
public AbstractBoatClassNotificationSet(UserStore store) {
|
||||
super(NotificationPreferences.PREF_NAME, store);
|
||||
super(BoatClassNotificationPreferences.PREF_NAME, store);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<BoatClass> calculateObjectsToNotify(NotificationPreferences preference) {
|
||||
protected Collection<BoatClass> calculateObjectsToNotify(BoatClassNotificationPreferences preference) {
|
||||
Set<BoatClass> result = new HashSet<>();
|
||||
for (BoatClassNotificationPreference pref : preference.getBoatClassPreferences().getBoatClasses()) {
|
||||
for (BoatClassNotificationPreference pref : preference.getBoatClasses()) {
|
||||
if (shouldNotifyFor(pref)) {
|
||||
result.add(pref.getBoatClass());
|
||||
}
|
||||
|
||||
+5
-5
@@ -6,21 +6,21 @@ import java.util.Set;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.server.impl.preferences.model.CompetitorNotificationPreference;
|
||||
import com.sap.sailing.server.impl.preferences.model.NotificationPreferences;
|
||||
import com.sap.sailing.server.impl.preferences.model.CompetitorNotificationPreferences;
|
||||
import com.sap.sse.security.PreferenceObjectBasedNotificationSet;
|
||||
import com.sap.sse.security.UserStore;
|
||||
|
||||
public abstract class AbstractCompetitorNotificationSet
|
||||
extends PreferenceObjectBasedNotificationSet<NotificationPreferences, Competitor> {
|
||||
extends PreferenceObjectBasedNotificationSet<CompetitorNotificationPreferences, Competitor> {
|
||||
|
||||
public AbstractCompetitorNotificationSet(UserStore store) {
|
||||
super(NotificationPreferences.PREF_NAME, store);
|
||||
super(CompetitorNotificationPreferences.PREF_NAME, store);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<Competitor> calculateObjectsToNotify(NotificationPreferences preference) {
|
||||
protected Collection<Competitor> calculateObjectsToNotify(CompetitorNotificationPreferences preference) {
|
||||
Set<Competitor> result = new HashSet<>();
|
||||
for (CompetitorNotificationPreference pref : preference.getCompetitorPreferences().getCompetitors()) {
|
||||
for (CompetitorNotificationPreference pref : preference.getCompetitors()) {
|
||||
if (shouldNotifyFor(pref)) {
|
||||
result.add(pref.getCompetitor());
|
||||
}
|
||||
|
||||
+3
-3
@@ -7,11 +7,11 @@ import com.sap.sse.common.settings.generic.SettingsList;
|
||||
public class BoatClassNotificationPreferences extends AbstractGenericSerializableSettings {
|
||||
private static final long serialVersionUID = -3682996540081614053L;
|
||||
|
||||
public static final String PREF_NAME = SailingPreferences.NOTIFICATION_PREFERENCES_PREFIX + "boatclasses";
|
||||
|
||||
private transient SettingsList<BoatClassNotificationPreference> boatClasses;
|
||||
|
||||
public BoatClassNotificationPreferences(String name, AbstractGenericSerializableSettings settings,
|
||||
RacingEventService racingEventService) {
|
||||
super(name, settings);
|
||||
public BoatClassNotificationPreferences(RacingEventService racingEventService) {
|
||||
boatClasses = new SettingsList<>("boatClasses", this,
|
||||
() -> new BoatClassNotificationPreference(racingEventService.getBaseDomainFactory()));
|
||||
}
|
||||
|
||||
+3
-3
@@ -6,12 +6,12 @@ import com.sap.sse.common.settings.generic.SettingsList;
|
||||
|
||||
public class CompetitorNotificationPreferences extends AbstractGenericSerializableSettings {
|
||||
private static final long serialVersionUID = -3682996540081614053L;
|
||||
|
||||
public static final String PREF_NAME = SailingPreferences.NOTIFICATION_PREFERENCES_PREFIX + "competitors";
|
||||
|
||||
private transient SettingsList<CompetitorNotificationPreference> competitors;
|
||||
|
||||
public CompetitorNotificationPreferences(String name, AbstractGenericSerializableSettings settings,
|
||||
RacingEventService racingEventService) {
|
||||
super(name, settings);
|
||||
public CompetitorNotificationPreferences(RacingEventService racingEventService) {
|
||||
competitors = new SettingsList<>("competitors", this,
|
||||
() -> new CompetitorNotificationPreference(racingEventService.getCompetitorStore()));
|
||||
}
|
||||
|
||||
-44
@@ -1,44 +0,0 @@
|
||||
package com.sap.sailing.server.impl.preferences.model;
|
||||
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sse.common.settings.generic.AbstractGenericSerializableSettings;
|
||||
|
||||
/**
|
||||
* Preferences for Sailing users that define for which Objects a user wants to receive specific notifications.
|
||||
* This currently includes:
|
||||
* <ul>
|
||||
* <li>Results for a favorite Competitor</li>
|
||||
* <li>Results for a favorite BoatClass</li>
|
||||
* <li>Upcoming races for a favorite BoatClass</li>
|
||||
* </ul>
|
||||
*/
|
||||
public class NotificationPreferences extends AbstractGenericSerializableSettings {
|
||||
private static final long serialVersionUID = 8865010526321472376L;
|
||||
|
||||
public static final String PREF_NAME = "sailing.notifications";
|
||||
|
||||
private transient BoatClassNotificationPreferences boatClassPreferences;
|
||||
private transient CompetitorNotificationPreferences competitorPreferences;
|
||||
|
||||
public NotificationPreferences(RacingEventService racingEventService) {
|
||||
boatClassPreferences = new BoatClassNotificationPreferences("boatClassPreferences", this, racingEventService);
|
||||
competitorPreferences = new CompetitorNotificationPreferences("competitorPreferences", this, racingEventService);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addChildSettings() {
|
||||
// We do not create the Setting instances here, because access to the RacingEventService would not be given.
|
||||
// Doing this, Java/GWT Serialization isn't working anymore. Because the preferences are only serialized as JSON
|
||||
// in the backend an transferred as DTO to the frontend, this isn't a problem. Due to usage of BoatClass and
|
||||
// Competitor domain objects, it wouldn't be GWT compatible anyway.
|
||||
// The usage of Java Serialization isn't planned by now too.
|
||||
}
|
||||
|
||||
public BoatClassNotificationPreferences getBoatClassPreferences() {
|
||||
return boatClassPreferences;
|
||||
}
|
||||
|
||||
public CompetitorNotificationPreferences getCompetitorPreferences() {
|
||||
return competitorPreferences;
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package com.sap.sailing.server.impl.preferences.model;
|
||||
|
||||
public interface SailingPreferences {
|
||||
public static final String NOTIFICATION_PREFERENCES_PREFIX = "sailing.notifications.";
|
||||
}
|
||||
Reference in new issue
Block a user