mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-13 07:40:58 +00:00
# added replication to device configuratiom
This commit is contained in:
1 parent
d8192aa7b2
commit
5230799349
12 files changed
+144
-5
No files matched your search
+4
@@ -1,8 +1,10 @@
|
||||
package com.sap.sailing.domain.base;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
|
||||
import com.sap.sailing.domain.common.MarkType;
|
||||
import com.sap.sailing.domain.common.NauticalSide;
|
||||
|
||||
@@ -82,5 +84,7 @@ public interface SharedDomainFactory {
|
||||
|
||||
CourseArea getExistingCourseAreaById(Serializable courseAreaId);
|
||||
|
||||
DeviceConfigurationMatcher getOrCreateDeviceConfigurationMatcher(DeviceConfigurationMatcher.Type type, List<String> clientIdentifiers);
|
||||
|
||||
|
||||
}
|
||||
+3
-1
@@ -2,7 +2,9 @@ package com.sap.sailing.domain.base.configuration;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public interface DeviceConfigurationMatcher extends Serializable {
|
||||
import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory;
|
||||
|
||||
public interface DeviceConfigurationMatcher extends IsManagedBySharedDomainFactory, Serializable {
|
||||
final static int RANK_SINGLE = 1;
|
||||
final static int RANK_MULTI = 2;
|
||||
final static int RANK_ANY = 3;
|
||||
|
||||
+8
@@ -1,7 +1,10 @@
|
||||
package com.sap.sailing.domain.base.configuration.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collections;
|
||||
|
||||
import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
|
||||
|
||||
@@ -30,4 +33,9 @@ public enum DeviceConfigurationMatcherAny implements DeviceConfigurationMatcher
|
||||
return DeviceConfigurationMatcherAny.class.getSimpleName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) {
|
||||
return domainFactory.getOrCreateDeviceConfigurationMatcher(getMatcherType(), Collections.<String>emptyList());
|
||||
}
|
||||
|
||||
}
|
||||
+7
@@ -5,6 +5,8 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
|
||||
|
||||
@@ -48,4 +50,9 @@ public class DeviceConfigurationMatcherMulti implements DeviceConfigurationMatch
|
||||
return "DeviceConfigurationMatcherMulti [clientIdentifiers=" + clientIdentifiers + "]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) {
|
||||
return domainFactory.getOrCreateDeviceConfigurationMatcher(getMatcherType(), clientIdentifiers);
|
||||
}
|
||||
|
||||
}
|
||||
+8
@@ -1,7 +1,10 @@
|
||||
package com.sap.sailing.domain.base.configuration.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
|
||||
|
||||
@@ -43,4 +46,9 @@ public class DeviceConfigurationMatcherSingle implements DeviceConfigurationMatc
|
||||
return "DeviceConfigurationMatcherSingle [clientIdentifier=" + clientIdentifier + "]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) {
|
||||
return domainFactory.getOrCreateDeviceConfigurationMatcher(getMatcherType(), Arrays.asList(clientIdentifier));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -114,6 +114,4 @@ public interface DomainFactory extends SharedDomainFactory {
|
||||
*/
|
||||
void updateRaceDTOWithTrackedRaceData(TrackedRace trackedRace, RaceDTO raceDTO);
|
||||
|
||||
DeviceConfigurationMatcher getOrCreateDeviceConfigurationMatcher(DeviceConfigurationMatcher.Type type, List<String> clientIdentifiers);
|
||||
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.sap.sailing.server.replication.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
|
||||
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationImpl;
|
||||
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMatcherAny;
|
||||
|
||||
public class DeviceConfigurationReplicationTest extends AbstractServerReplicationTest {
|
||||
|
||||
@Test
|
||||
public void testEventReplication() throws InterruptedException {
|
||||
DeviceConfigurationMatcher matcher = DeviceConfigurationMatcherAny.INSTANCE;
|
||||
DeviceConfigurationImpl configuration = new DeviceConfigurationImpl();
|
||||
master.createOrUpdateDeviceConfiguration(matcher, configuration);
|
||||
|
||||
Thread.sleep(1000);
|
||||
Map<DeviceConfigurationMatcher, DeviceConfiguration> configurationMap = replica.getAllDeviceConfigurations();
|
||||
assertEquals(1, configurationMap.size());
|
||||
assertEquals(matcher.getMatcherType(), configurationMap.keySet().iterator().next().getMatcherType());
|
||||
}
|
||||
}
|
||||
+6
-2
@@ -131,10 +131,12 @@ import com.sap.sailing.server.operationaltransformation.AddRaceDefinition;
|
||||
import com.sap.sailing.server.operationaltransformation.AddSpecificRegatta;
|
||||
import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLeaderboardColumn;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateOrUpdateDeviceConfiguration;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateTrackedRace;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordCompetitorGPSFix;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordMarkGPSFix;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordWindFix;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveDeviceConfiguration;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveMediaTrackOperation;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveWindFix;
|
||||
@@ -2131,16 +2133,18 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
public void createOrUpdateDeviceConfiguration(DeviceConfigurationMatcher matcher, DeviceConfiguration configuration) {
|
||||
synchronized (configurationMap) {
|
||||
configurationMap.put(matcher, configuration);
|
||||
mongoObjectFactory.storeDeviceConfiguration(matcher, configuration);
|
||||
}
|
||||
mongoObjectFactory.storeDeviceConfiguration(matcher, configuration);
|
||||
replicate(new CreateOrUpdateDeviceConfiguration(matcher, configuration));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeDeviceConfiguration(DeviceConfigurationMatcher matcher) {
|
||||
synchronized (configurationMap) {
|
||||
configurationMap.remove(matcher);
|
||||
mongoObjectFactory.removeDeviceConfiguration(matcher);
|
||||
}
|
||||
mongoObjectFactory.removeDeviceConfiguration(matcher);
|
||||
replicate(new RemoveDeviceConfiguration(matcher));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
|
||||
public abstract class AbstractDeviceConfigurationOperation extends AbstractRacingEventServiceOperation<Void> {
|
||||
|
||||
private static final long serialVersionUID = -4918619894046424881L;
|
||||
|
||||
protected DeviceConfigurationMatcher matcher;
|
||||
|
||||
public AbstractDeviceConfigurationOperation(DeviceConfigurationMatcher matcher) {
|
||||
this.matcher = matcher;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformClientOp(RacingEventServiceOperation<?> serverOp) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformServerOp(RacingEventServiceOperation<?> clientOp) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
|
||||
public class CreateOrUpdateDeviceConfiguration extends AbstractDeviceConfigurationOperation {
|
||||
|
||||
private static final long serialVersionUID = -3859272800957110301L;
|
||||
|
||||
private DeviceConfiguration configuration;
|
||||
|
||||
public CreateOrUpdateDeviceConfiguration(DeviceConfigurationMatcher matcher, DeviceConfiguration configuration) {
|
||||
super(matcher);
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void internalApplyTo(RacingEventService toState) throws Exception {
|
||||
toState.createOrUpdateDeviceConfiguration(matcher, configuration);
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
|
||||
public class RemoveDeviceConfiguration extends AbstractDeviceConfigurationOperation {
|
||||
|
||||
private static final long serialVersionUID = 4558840313811769137L;
|
||||
|
||||
public RemoveDeviceConfiguration(DeviceConfigurationMatcher matcher) {
|
||||
super(matcher);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void internalApplyTo(RacingEventService toState) throws Exception {
|
||||
toState.removeDeviceConfiguration(matcher);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+9
@@ -4,11 +4,13 @@ import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
@@ -20,6 +22,8 @@ import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher.Type;
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.CompetitorImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseAreaImpl;
|
||||
@@ -167,4 +171,9 @@ public enum DomainFactoryImpl implements SharedDomainFactory {
|
||||
return courseAreaCache.get(courseAreaId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceConfigurationMatcher getOrCreateDeviceConfigurationMatcher(Type type, List<String> clientIdentifiers) {
|
||||
throw new UnsupportedOperationException("Not yet implemented");
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user