mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-21 05:05:31 +00:00
Merge branch 'racecommittee_integrated' of ssh://sapsailing.com/home/trac/git into racecommittee_integrated
Conflicts: .gitignore
This commit is contained in:
@@ -16,3 +16,6 @@ sailing_debug0*
|
||||
/mobile/com.sap.sailing.racecommittee.glue/gen/*
|
||||
/mobile/com.sap.sailing.racecommittee.glue/bin
|
||||
/mobile/com.sap.sailing.racecommittee.glue/gen
|
||||
/mobile/com.sap.sailing.racecommittee.glue/bin/com.sap.sailing.racecommittee.glue.jar
|
||||
/mobile/com.sap.sailing.racecommittee.glue/bin/jarlist.cache
|
||||
/java/com.sap.sailing.server.gateway.serialization.test/.settings/*.prefs
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry exported="true" kind="lib" path="libs/mockito-all-1.9.5.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.sap.sailing.server.gateway.serialization.test</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -0,0 +1,14 @@
|
||||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: com.sap.sailing.server.gateway.serialization.test
|
||||
Bundle-SymbolicName: com.sap.sailing.server.gateway.serialization.test
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: SAP
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Require-Bundle: com.sap.sailing.server.gateway.serialization;bundle-version="1.0.0",
|
||||
com.sap.sailing.domain;bundle-version="1.0.0",
|
||||
com.sap.sailing.domain.common;bundle-version="1.0.0",
|
||||
org.junit4;bundle-version="4.8.2"
|
||||
Import-Package: org.json.simple
|
||||
Bundle-ClassPath: libs/mockito-all-1.9.5.jar,
|
||||
.
|
||||
@@ -0,0 +1,5 @@
|
||||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
libs/mockito-all-1.9.5.jar
|
||||
Binary file not shown.
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<artifactId>root</artifactId>
|
||||
<groupId>com.sap.sailing</groupId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>com.sap.sailing.server.gateway.serialization.test</artifactId>
|
||||
<packaging>eclipse-test-plugin</packaging>
|
||||
</project>
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
package com.sap.sailing.server.gateway.serialization.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeEventSerializer;
|
||||
|
||||
public abstract class BaseRaceCommitteEventTest<FlagType extends RaceCommitteeEvent> {
|
||||
|
||||
protected final UUID expectedId = UUID.randomUUID();
|
||||
protected final long expectedTimestamp = 1337l;
|
||||
protected final int expectedPassId = 42;
|
||||
|
||||
protected JsonSerializer<RaceCommitteeEvent> serializer;
|
||||
protected FlagType event;
|
||||
|
||||
protected abstract FlagType createMockEvent();
|
||||
|
||||
protected abstract JsonSerializer<RaceCommitteeEvent> createSerializer();
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
serializer = createSerializer();
|
||||
event = createMockEvent();
|
||||
|
||||
TimePoint timePoint = mock(TimePoint.class);
|
||||
when(timePoint.asMillis()).thenReturn(expectedTimestamp);
|
||||
|
||||
when(event.getId()).thenReturn(expectedId);
|
||||
when(event.getTimePoint()).thenReturn(timePoint);
|
||||
when(event.getPassId()).thenReturn(expectedPassId);
|
||||
when(event.getInvolvedBoats()).thenReturn(
|
||||
Collections.<Competitor> emptyList());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSerializeBaseAttributes() {
|
||||
JSONObject json = serializer.serialize(event);
|
||||
|
||||
assertEquals(
|
||||
expectedId,
|
||||
UUID.fromString(json.get(
|
||||
RaceCommitteeEventSerializer.FIELD_ID).toString()));
|
||||
assertEquals(expectedTimestamp,
|
||||
json.get(RaceCommitteeEventSerializer.FIELD_TIMESTAMP));
|
||||
assertEquals(expectedPassId,
|
||||
json.get(RaceCommitteeEventSerializer.FIELD_PASS_ID));
|
||||
}
|
||||
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package com.sap.sailing.server.gateway.serialization.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.server.gateway.serialization.BoatClassJsonSerializer;
|
||||
|
||||
public class BoatClassJsonSerializerTest {
|
||||
|
||||
protected BoatClass boatClass;
|
||||
protected BoatClassJsonSerializer serializer;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
boatClass = mock(BoatClass.class);
|
||||
serializer = new BoatClassJsonSerializer();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testName() {
|
||||
String expectedName = "Cruiser";
|
||||
when(boatClass.getName()).thenReturn(expectedName);
|
||||
|
||||
JSONObject result = serializer.serialize(boatClass);
|
||||
|
||||
assertEquals(
|
||||
expectedName,
|
||||
result.get(BoatClassJsonSerializer.FIELD_NAME));
|
||||
}
|
||||
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package com.sap.sailing.server.gateway.serialization.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.server.gateway.serialization.CourseAreaJsonSerializer;
|
||||
|
||||
public class CourseAreaJsonSerializerTest {
|
||||
|
||||
protected CourseArea courseArea;
|
||||
protected CourseAreaJsonSerializer serializer;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
courseArea = mock(CourseArea.class);
|
||||
serializer = new CourseAreaJsonSerializer();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testName() {
|
||||
String expectedName = "Cruiser";
|
||||
when(courseArea.getName()).thenReturn(expectedName);
|
||||
|
||||
JSONObject result = serializer.serialize(courseArea);
|
||||
|
||||
assertEquals(
|
||||
expectedName,
|
||||
result.get(CourseAreaJsonSerializer.FIELD_NAME));
|
||||
}
|
||||
|
||||
@Ignore
|
||||
@Test
|
||||
public void testRaces() {
|
||||
/// TODO: Implement a test for checking if races are correctly serialized on course areas
|
||||
}
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.sap.sailing.server.gateway.serialization.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.server.gateway.serialization.EventJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class EventJsonSerializerTest {
|
||||
|
||||
protected final UUID expectedId = UUID.randomUUID();
|
||||
protected final String expectedName = "ab";
|
||||
protected final String expectedPublicationUrl = "cd";
|
||||
|
||||
protected JsonSerializer<Venue> venueSerializer;
|
||||
protected EventJsonSerializer serializer;
|
||||
protected Event event;
|
||||
|
||||
// see https://groups.google.com/forum/?fromgroups=#!topic/mockito/iMumB0_bpdo
|
||||
@SuppressWarnings("unchecked")
|
||||
@Before
|
||||
public void setUp() {
|
||||
// Event and its basic attributes ...
|
||||
event = mock(Event.class);
|
||||
when(event.getId()).thenReturn(expectedId);
|
||||
when(event.getName()).thenReturn(expectedName);
|
||||
when(event.getPublicationUrl()).thenReturn(expectedPublicationUrl);
|
||||
|
||||
// ... and the serializer itself.
|
||||
venueSerializer = mock(JsonSerializer.class);
|
||||
serializer = new EventJsonSerializer(venueSerializer);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBasicAttributes() {
|
||||
JSONObject result = serializer.serialize(event);
|
||||
|
||||
assertEquals(
|
||||
expectedId,
|
||||
UUID.fromString(result.get(EventJsonSerializer.FIELD_ID).toString()));
|
||||
assertEquals(
|
||||
expectedName,
|
||||
result.get(EventJsonSerializer.FIELD_NAME));
|
||||
assertEquals(
|
||||
expectedPublicationUrl,
|
||||
result.get(EventJsonSerializer.FIELD_PUBLICATION_URL));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSerializesVenue() {
|
||||
// ... venue and its mocked serializer ...
|
||||
Venue venue = mock(Venue.class);
|
||||
when(event.getVenue()).thenReturn(venue);
|
||||
JSONObject expectedVenue = new JSONObject();
|
||||
|
||||
when(venueSerializer.serialize(eq(venue))).thenReturn(expectedVenue);
|
||||
|
||||
JSONObject result = serializer.serialize(event);
|
||||
|
||||
assertEquals(
|
||||
expectedVenue,
|
||||
result.get(EventJsonSerializer.FIELD_VENUE));
|
||||
}
|
||||
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
package com.sap.sailing.server.gateway.serialization.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeFlagEventSerializer;
|
||||
|
||||
public class RaceCommitteeEventTest extends BaseRaceCommitteEventTest<RaceCommitteeEvent> {
|
||||
|
||||
protected final String expectedClassValue = "AllYourBaseAreBelongToUs";
|
||||
|
||||
private class TestRaceCommitteeEventSerializer extends RaceCommitteeEventSerializer {
|
||||
@Override
|
||||
protected String getClassFieldValue() {
|
||||
return expectedClassValue;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RaceCommitteeEvent createMockEvent() {
|
||||
return mock(RaceCommitteeEvent.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JsonSerializer<RaceCommitteeEvent> createSerializer() {
|
||||
return new TestRaceCommitteeEventSerializer();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClassAttribute() {
|
||||
JSONObject json = serializer.serialize(event);
|
||||
|
||||
assertEquals(
|
||||
expectedClassValue,
|
||||
json.get(RaceCommitteeFlagEventSerializer.FIELD_CLASS));
|
||||
}
|
||||
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
package com.sap.sailing.server.gateway.serialization.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.Flags;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeFlagEventSerializer;
|
||||
|
||||
public class RaceCommitteeFlagEventSerializerTest extends BaseRaceCommitteEventTest<RaceCommitteeFlagEvent> {
|
||||
|
||||
|
||||
private Flags expectedUpperFlag = Flags.FOXTROTT;
|
||||
private Flags expectedLowerFlag = Flags.FOXTROTT;
|
||||
private boolean expectedDisplayed = true;
|
||||
|
||||
@Override
|
||||
protected RaceCommitteeFlagEvent createMockEvent() {
|
||||
RaceCommitteeFlagEvent event = mock(RaceCommitteeFlagEvent.class);
|
||||
|
||||
when(event.getUpperFlag()).thenReturn(expectedUpperFlag);
|
||||
when(event.getLowerFlag()).thenReturn(expectedLowerFlag);
|
||||
when(event.isDisplayed()).thenReturn(expectedDisplayed);
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JsonSerializer<RaceCommitteeEvent> createSerializer() {
|
||||
return new RaceCommitteeFlagEventSerializer();
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
super.setUp();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFlagStatusAttributes() {
|
||||
JSONObject json = serializer.serialize(event);
|
||||
|
||||
assertEquals(
|
||||
expectedUpperFlag,
|
||||
json.get(RaceCommitteeFlagEventSerializer.FIELD_UPPER_FLAG));
|
||||
assertEquals(
|
||||
expectedLowerFlag,
|
||||
json.get(RaceCommitteeFlagEventSerializer.FIELD_LOWER_FLAG));
|
||||
assertEquals(
|
||||
expectedDisplayed,
|
||||
json.get(RaceCommitteeFlagEventSerializer.FIELD_DISPLAYED));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClassAttribute() {
|
||||
JSONObject json = serializer.serialize(event);
|
||||
|
||||
assertEquals(
|
||||
RaceCommitteeFlagEventSerializer.VALUE_CLASS,
|
||||
json.get(RaceCommitteeFlagEventSerializer.FIELD_CLASS));
|
||||
}
|
||||
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
package com.sap.sailing.server.gateway.serialization.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeStartTimeEventSerializer;
|
||||
|
||||
public class RaceCommitteeStartTimeEventSerializerTest extends BaseRaceCommitteEventTest<RaceCommitteeStartTimeEvent> {
|
||||
|
||||
private final long expectedStartTimeTimestamp = 2013;
|
||||
|
||||
@Override
|
||||
protected RaceCommitteeStartTimeEvent createMockEvent() {
|
||||
|
||||
TimePoint startTime = mock(TimePoint.class);
|
||||
when(startTime.asMillis()).thenReturn(expectedStartTimeTimestamp);
|
||||
|
||||
RaceCommitteeStartTimeEvent event = mock(RaceCommitteeStartTimeEvent.class);
|
||||
when(event.getStartTime()).thenReturn(startTime);
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JsonSerializer<RaceCommitteeEvent> createSerializer() {
|
||||
return new RaceCommitteeStartTimeEventSerializer();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStartTimeAttributes() {
|
||||
JSONObject json = serializer.serialize(event);
|
||||
|
||||
assertEquals(
|
||||
expectedStartTimeTimestamp,
|
||||
json.get(RaceCommitteeStartTimeEventSerializer.FIELD_START_TIME));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClassAttribute() {
|
||||
JSONObject json = serializer.serialize(event);
|
||||
|
||||
assertEquals(
|
||||
RaceCommitteeStartTimeEventSerializer.VALUE_CLASS,
|
||||
json.get(RaceCommitteeStartTimeEventSerializer.FIELD_CLASS));
|
||||
}
|
||||
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package com.sap.sailing.server.gateway.serialization.test;
|
||||
|
||||
/// TODO write test for RegattaJsonSerializer
|
||||
public class RegattaJsonSerializerTest {
|
||||
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package com.sap.sailing.server.gateway.serialization.test;
|
||||
|
||||
/// TODO write test for VenueJsonSerializer
|
||||
public class VenueJsonSerializerTest {
|
||||
|
||||
}
|
||||
+1
-1
@@ -15,9 +15,9 @@ public class CourseAreaJsonDeserializer implements JsonDeserializer<CourseArea>
|
||||
|
||||
CourseArea courseArea = new CourseAreaImpl(name);
|
||||
|
||||
/// TODO: link races to courseArea...
|
||||
/*JSONArray racesArray = Helpers.getNestedArraySafe(object, CourseAreaJsonSerializer.FIELD_RACES);
|
||||
for (Object element : racesArray) {
|
||||
/// TODO: add races to courseArea...
|
||||
System.out.println(element.toString());
|
||||
}*/
|
||||
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.EventJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeEventSerializer;
|
||||
|
||||
/// TODO deserialize involved boats
|
||||
public abstract class RaceCommitteeEventDeserializer implements JsonDeserializer<RaceCommitteeEvent> {
|
||||
|
||||
protected abstract RaceCommitteeEvent deserialize(JSONObject object, UUID id, TimePoint timePoint, int passId)
|
||||
throws JsonDeserializationException;
|
||||
|
||||
@Override
|
||||
public RaceCommitteeEvent deserialize(JSONObject object)
|
||||
throws JsonDeserializationException {
|
||||
// Factory handles class field and subclassing...
|
||||
String id = object.get(RaceCommitteeEventSerializer.FIELD_ID).toString();
|
||||
long timeStamp = (Long) object.get(RaceCommitteeEventSerializer.FIELD_TIMESTAMP);
|
||||
int passId = (Integer) object.get(RaceCommitteeEventSerializer.FIELD_PASS_ID);
|
||||
|
||||
UUID uuid = null;
|
||||
try {
|
||||
uuid = UUID.fromString(id);
|
||||
} catch (IllegalArgumentException iae) {
|
||||
throw new JsonDeserializationException(
|
||||
String.format("Field %s with %s couldn't be parsed as UUID.", EventJsonSerializer.FIELD_ID, id),
|
||||
iae);
|
||||
}
|
||||
|
||||
return deserialize(object, uuid, new MillisecondsTimePoint(timeStamp), passId);
|
||||
}
|
||||
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeFlagEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeStartTimeEventSerializer;
|
||||
|
||||
public class RaceCommitteeEventDeserializerFactory {
|
||||
|
||||
protected JsonDeserializer<RaceCommitteeEvent> flagEventDeserializer;
|
||||
protected JsonDeserializer<RaceCommitteeEvent> startTimeEventDeserializer;
|
||||
|
||||
public RaceCommitteeEventDeserializerFactory() {
|
||||
flagEventDeserializer = new RaceCommitteeFlagEventDeserializer();
|
||||
startTimeEventDeserializer = new RaceCommitteeStartTimeEventDeserializer();
|
||||
}
|
||||
|
||||
public JsonDeserializer<RaceCommitteeEvent> getDeserializer(
|
||||
JSONObject object) throws JsonDeserializationException {
|
||||
Object type = object.get(RaceCommitteeEventSerializer.FIELD_CLASS);
|
||||
|
||||
if (type.equals(RaceCommitteeFlagEventSerializer.VALUE_CLASS)) {
|
||||
return flagEventDeserializer;
|
||||
} else if (type.equals(RaceCommitteeStartTimeEventSerializer.VALUE_CLASS)) {
|
||||
return startTimeEventDeserializer;
|
||||
}
|
||||
|
||||
throw new JsonDeserializationException(String.format(
|
||||
"There is no deserializer defined for event type %s.", type));
|
||||
}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racecommittee.Flags;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.impl.RaceCommitteeFlagEventImpl;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeFlagEventSerializer;
|
||||
|
||||
public class RaceCommitteeFlagEventDeserializer extends
|
||||
RaceCommitteeEventDeserializer {
|
||||
|
||||
@Override
|
||||
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
|
||||
TimePoint timePoint, int passId) {
|
||||
|
||||
Flags upperFlag = Flags.valueOf(object.get(
|
||||
RaceCommitteeFlagEventSerializer.FIELD_UPPER_FLAG).toString());
|
||||
Flags lowerFlag = Flags.valueOf(object.get(
|
||||
RaceCommitteeFlagEventSerializer.FIELD_LOWER_FLAG).toString());
|
||||
boolean isDisplayed = (Boolean) object
|
||||
.get(RaceCommitteeFlagEventSerializer.FIELD_DISPLAYED);
|
||||
|
||||
return new RaceCommitteeFlagEventImpl(timePoint, id,
|
||||
Collections.<Competitor>emptyList(), passId, upperFlag,
|
||||
lowerFlag, isDisplayed);
|
||||
}
|
||||
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.impl.RaceCommitteeStartTimeEventImpl;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeStartTimeEventSerializer;
|
||||
|
||||
public class RaceCommitteeStartTimeEventDeserializer extends RaceCommitteeEventDeserializer {
|
||||
|
||||
@Override
|
||||
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
|
||||
TimePoint timePoint, int passId) {
|
||||
|
||||
long startTime = (Long) object.get(RaceCommitteeStartTimeEventSerializer.FIELD_START_TIME);
|
||||
|
||||
return new RaceCommitteeStartTimeEventImpl(
|
||||
timePoint,
|
||||
id,
|
||||
Collections.<Competitor>emptyList(),
|
||||
passId,
|
||||
new MillisecondsTimePoint(startTime));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+6
-1
@@ -4,14 +4,19 @@ import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
|
||||
public class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
|
||||
/// TODO serialize involved boats
|
||||
public abstract class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
|
||||
public static final String FIELD_CLASS = "@class";
|
||||
public static final String FIELD_ID = "id";
|
||||
public static final String FIELD_TIMESTAMP = "timestamp";
|
||||
public static final String FIELD_PASS_ID = "passId";
|
||||
|
||||
protected abstract String getClassFieldValue();
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(RaceCommitteeEvent object) {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put(FIELD_CLASS, getClassFieldValue());
|
||||
result.put(FIELD_ID, object.getId().toString());
|
||||
result.put(FIELD_TIMESTAMP, object.getTimePoint().asMillis());
|
||||
result.put(FIELD_PASS_ID, object.getPassId());
|
||||
|
||||
+17
-14
@@ -5,23 +5,26 @@ import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
|
||||
|
||||
public class RaceCommitteeEventSerializerFactory {
|
||||
private JsonSerializer<RaceCommitteeEvent> baseEventSerializer;
|
||||
|
||||
|
||||
private JsonSerializer<RaceCommitteeEvent> flagEventSerializer;
|
||||
private JsonSerializer<RaceCommitteeEvent> startTimeSerializer;
|
||||
|
||||
public RaceCommitteeEventSerializerFactory() {
|
||||
this.baseEventSerializer = new RaceCommitteeEventSerializer();
|
||||
flagEventSerializer = new RaceCommitteeFlagEventSerializer();
|
||||
startTimeSerializer = new RaceCommitteeStartTimeEventSerializer();
|
||||
}
|
||||
|
||||
public JsonSerializer<RaceCommitteeEvent> getSerializer(RaceCommitteeEvent event) {
|
||||
|
||||
public JsonSerializer<RaceCommitteeEvent> getSerializer(
|
||||
RaceCommitteeEvent event) {
|
||||
if (event instanceof RaceCommitteeFlagEvent) {
|
||||
return new RaceCommitteeFlagEventSerializer(baseEventSerializer);
|
||||
return flagEventSerializer;
|
||||
} else if (event instanceof RaceCommitteeStartTimeEvent) {
|
||||
return startTimeSerializer;
|
||||
}
|
||||
if (event instanceof RaceCommitteeStartTimeEvent) {
|
||||
return new RaceCommitteeStartTimeEventSerializer(baseEventSerializer);
|
||||
}
|
||||
throw new UnsupportedOperationException(
|
||||
String.format(
|
||||
"There is no serializer defined for event type %s",
|
||||
event.getClass().getName()));
|
||||
|
||||
throw new UnsupportedOperationException(String.format(
|
||||
"There is no serializer defined for event type %s", event
|
||||
.getClass().getName()));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+7
-11
@@ -5,30 +5,26 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
|
||||
|
||||
/**
|
||||
* Implements JsonSerializer<RaceCommitteeEvent> to enable a consistent interface when used
|
||||
* with {@link RaceCommitteeEventSerializerFactory}, see type-safeness of generics.
|
||||
*/
|
||||
public class RaceCommitteeFlagEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
|
||||
public class RaceCommitteeFlagEventSerializer extends RaceCommitteeEventSerializer {
|
||||
public static final String VALUE_CLASS = RaceCommitteeFlagEvent.class.getSimpleName();
|
||||
public static final String FIELD_UPPER_FLAG = "upperFlag";
|
||||
public static final String FIELD_LOWER_FLAG = "lowerFlag";
|
||||
public static final String FIELD_DISPLAYED = "displayed";
|
||||
|
||||
private JsonSerializer<RaceCommitteeEvent> baseSerializer;
|
||||
|
||||
public RaceCommitteeFlagEventSerializer(JsonSerializer<RaceCommitteeEvent> baseSerializer) {
|
||||
this.baseSerializer = baseSerializer;
|
||||
@Override
|
||||
protected String getClassFieldValue() {
|
||||
return VALUE_CLASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(RaceCommitteeEvent object) {
|
||||
// We have to cast here, see class comment
|
||||
RaceCommitteeFlagEvent flagEvent = (RaceCommitteeFlagEvent) object;
|
||||
|
||||
JSONObject result = baseSerializer.serialize(flagEvent);
|
||||
JSONObject result = super.serialize(flagEvent);
|
||||
result.put(FIELD_UPPER_FLAG, flagEvent.getUpperFlag());
|
||||
result.put(FIELD_LOWER_FLAG, flagEvent.getLowerFlag());
|
||||
result.put(FIELD_DISPLAYED, flagEvent.isDisplayed());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+7
-11
@@ -1,28 +1,24 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
|
||||
|
||||
/**
|
||||
* Implements JsonSerializer<RaceCommitteeEvent> to enable a consistent interface when used
|
||||
* with {@link RaceCommitteeEventSerializerFactory}, see type-safeness of generics.
|
||||
*/
|
||||
public class RaceCommitteeStartTimeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
|
||||
public class RaceCommitteeStartTimeEventSerializer extends RaceCommitteeEventSerializer {
|
||||
public static final String VALUE_CLASS = RaceCommitteeStartTimeEvent.class.getSimpleName();
|
||||
public static final String FIELD_START_TIME = "startTime";
|
||||
|
||||
private JsonSerializer<RaceCommitteeEvent> baseSerializer;
|
||||
|
||||
public RaceCommitteeStartTimeEventSerializer(JsonSerializer<RaceCommitteeEvent> baseSerializer) {
|
||||
this.baseSerializer = baseSerializer;
|
||||
@Override
|
||||
protected String getClassFieldValue() {
|
||||
return VALUE_CLASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(RaceCommitteeEvent object) {
|
||||
// We have to cast here, see class comment
|
||||
RaceCommitteeStartTimeEvent startTimeEvent = (RaceCommitteeStartTimeEvent) object;
|
||||
|
||||
JSONObject result = baseSerializer.serialize(startTimeEvent);
|
||||
JSONObject result = super.serialize(startTimeEvent);
|
||||
result.put(FIELD_START_TIME, startTimeEvent.getStartTime().asMillis());
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
<servlet>
|
||||
<servlet-name>RCRegattas</servlet-name>
|
||||
<servlet-class>com.sap.sailing.server.gateway.impl.RegattasRaceCommitteeServlet</servlet-class>
|
||||
<servlet-class>com.sap.sailing.server.gateway.impl.rc.RegattasRaceJsonExportServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>RCRegattas</servlet-name>
|
||||
@@ -25,17 +25,16 @@
|
||||
|
||||
<servlet>
|
||||
<servlet-name>RCEvents</servlet-name>
|
||||
<servlet-class>com.sap.sailing.server.gateway.impl.EventsRaceCommitteeServlet</servlet-class>
|
||||
<servlet-class>com.sap.sailing.server.gateway.impl.rc.EventsJsonExportServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>RCEvents</servlet-name>
|
||||
<url-pattern>/rc/events</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
|
||||
<servlet>
|
||||
<servlet-name>RCEventTrack</servlet-name>
|
||||
<servlet-class>com.sap.sailing.server.gateway.impl.EventTrackRaceCommitteeServlet</servlet-class>
|
||||
<servlet-class>com.sap.sailing.server.gateway.impl.rc.EventTrackJsonExportServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>RCEventTrack</servlet-name>
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
<module>com.sap.sailing.server</module>
|
||||
<module>com.sap.sailing.server.gateway</module>
|
||||
<module>com.sap.sailing.server.gateway.serialization</module>
|
||||
<module>com.sap.sailing.server.gateway.serialization.test</module>
|
||||
<module>com.sap.sailing.server.replication</module>
|
||||
<module>com.sap.sailing.server.replication.test</module>
|
||||
<module>com.sap.sailing.www</module>
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
<uses-sdk
|
||||
android:minSdkVersion="13"
|
||||
android:targetSdkVersion="15" />
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
|
||||
|
||||
<application
|
||||
android:icon="@drawable/ic_launcher"
|
||||
|
||||
Binary file not shown.
@@ -4,10 +4,9 @@
|
||||
android:layout_height="match_parent" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:text="@string/hello_world"
|
||||
tools:context=".EventSelectionActivity" />
|
||||
|
||||
|
||||
+105
-11
@@ -1,20 +1,114 @@
|
||||
package com.sap.sailing.racecommittee.app;
|
||||
|
||||
import android.os.Bundle;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.server.gateway.deserialization.CourseAreaJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.EventJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.VenueJsonDeserializer;
|
||||
|
||||
public class EventSelectionActivity extends Activity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_event_selection);
|
||||
}
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_event_selection);
|
||||
|
||||
Downloader downloader = new Downloader(this);
|
||||
downloader.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.activity_event_selection, menu);
|
||||
return true;
|
||||
}
|
||||
public void show(String result) {
|
||||
TextView tv = (TextView) findViewById(R.id.textView1);
|
||||
|
||||
if (result != null) {
|
||||
|
||||
JsonDeserializer<Event> deserializer = new EventJsonDeserializer(
|
||||
new VenueJsonDeserializer(
|
||||
new CourseAreaJsonDeserializer()));
|
||||
|
||||
JSONParser p = new JSONParser();
|
||||
try {
|
||||
JSONArray o = (JSONArray) p.parse(result);
|
||||
for (Object e : o) {
|
||||
|
||||
/*JSONObject json = (JSONObject) e;
|
||||
RaceCommitteeEventDeserializerFactory factory = new RaceCommitteeEventDeserializerFactory();
|
||||
RaceCommitteeEvent event = factory.getDeserializer(json).deserialize(json);*/
|
||||
|
||||
Event event = deserializer.deserialize((JSONObject)e);
|
||||
tv.setText(event.getName());
|
||||
}
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
tv.setText("Fehler");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.activity_event_selection, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
private class Downloader extends AsyncTask<Object, Integer, String> {
|
||||
|
||||
private EventSelectionActivity activity;
|
||||
|
||||
public Downloader(EventSelectionActivity activity) {
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String doInBackground(Object... params) {
|
||||
try {
|
||||
URL url = new URL("http://10.0.2.2:8888/sailingserver/rc/events");
|
||||
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
|
||||
urlConnection.setConnectTimeout(5000);
|
||||
try {
|
||||
BufferedReader r = new BufferedReader(
|
||||
new InputStreamReader(urlConnection.getInputStream()));
|
||||
StringBuilder total = new StringBuilder();
|
||||
String line;
|
||||
while ((line = r.readLine()) != null) {
|
||||
total.append(line);
|
||||
}
|
||||
return total.toString();
|
||||
} finally {
|
||||
urlConnection.disconnect();
|
||||
}
|
||||
} catch (IOException ioe) {
|
||||
ioe.toString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(String result) {
|
||||
super.onPostExecute(result);
|
||||
activity.show(result);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user