mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-08 13:20:57 +00:00
Merge remote-tracking branch 'server/master'
This commit is contained in:
commit
43d278ae19
11 files changed
+105
-22
No files matched your search
@@ -344,11 +344,14 @@ if [[ "$@" == "install" ]] || [[ "$@" == "all" ]]; then
|
||||
rm -rf $ACDIR/org.eclipse.*
|
||||
rm -rf $ACDIR/configuration/org.eclipse.*
|
||||
|
||||
# always overwrite start and stop scripts as they
|
||||
# should never contain any custom logic
|
||||
cp -v $PROJECT_HOME/java/target/start $ACDIR/
|
||||
cp -v $PROJECT_HOME/java/target/stop $ACDIR/
|
||||
cp -v $PROJECT_HOME/java/target/status $ACDIR/
|
||||
|
||||
if [ ! -f "$ACDIR/env.sh" ]; then
|
||||
cp -v $PROJECT_HOME/java/target/env.sh $ACDIR/
|
||||
cp -v $PROJECT_HOME/java/target/start $ACDIR/
|
||||
cp -v $PROJECT_HOME/java/target/stop $ACDIR/
|
||||
cp -v $PROJECT_HOME/java/target/status $ACDIR/
|
||||
fi
|
||||
|
||||
if [ ! -f $ACDIR/no-overwrite ]; then
|
||||
@@ -363,9 +366,6 @@ if [[ "$@" == "install" ]] || [[ "$@" == "all" ]]; then
|
||||
cp -v $PROJECT_HOME/configuration/mongodb.cfg $ACDIR/
|
||||
|
||||
cp -v $PROJECT_HOME/java/target/env.sh $ACDIR/
|
||||
cp -v $PROJECT_HOME/java/target/start $ACDIR/
|
||||
cp -v $PROJECT_HOME/java/target/stop $ACDIR/
|
||||
cp -v $PROJECT_HOME/java/target/status $ACDIR/
|
||||
cp -v $PROJECT_HOME/java/target/udpmirror $ACDIR/
|
||||
|
||||
cp -v $PROJECT_HOME/java/target/http2udpmirror $ACDIR
|
||||
|
||||
+20
@@ -185,6 +185,26 @@ public class SwissTimingAdapterPersistenceImpl implements SwissTimingAdapterPers
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasRaceStartlist(String raceID) {
|
||||
DBCollection races = database.getCollection(CollectionNames.RACES_MESSAGES.name());
|
||||
BasicDBObject query = new BasicDBObject();
|
||||
query.append(FieldNames.RACE_ID.name(), raceID);
|
||||
query.append(FieldNames.MESSAGE_COMMAND.name(), MessageType.STL.name());
|
||||
DBObject object = races.findOne(query);
|
||||
return object != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasRaceCourse(String raceID) {
|
||||
DBCollection races = database.getCollection(CollectionNames.RACES_MESSAGES.name());
|
||||
BasicDBObject query = new BasicDBObject();
|
||||
query.append(FieldNames.RACE_ID.name(), raceID);
|
||||
query.append(FieldNames.MESSAGE_COMMAND.name(), MessageType.CCG.name());
|
||||
DBObject object = races.findOne(query);
|
||||
return object != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<Race> getRaces() {
|
||||
DBCollection races = database.getCollection(CollectionNames.RACES_MASTERDATA.name());
|
||||
|
||||
+12
@@ -208,4 +208,16 @@ public class OverlappingStoredAndReceivedMessagesTest implements RaceSpecificMes
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasRaceStartlist(String raceID) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasRaceCourse(String raceID) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
+12
-1
@@ -7,11 +7,15 @@ public class RaceRecord {
|
||||
private String raceID;
|
||||
private String description;
|
||||
private Date startTime;
|
||||
private boolean hasCourse;
|
||||
private boolean hasStartlist;
|
||||
|
||||
public RaceRecord(String raceID, String description, Date startTime) {
|
||||
public RaceRecord(String raceID, String description, Date startTime, boolean hasCourse, boolean hasStartlist) {
|
||||
this.raceID = raceID;
|
||||
this.description = description;
|
||||
this.startTime = startTime;
|
||||
this.hasCourse = hasCourse;
|
||||
this.hasStartlist = hasStartlist;
|
||||
}
|
||||
|
||||
public String getRaceID() {
|
||||
@@ -26,4 +30,11 @@ public class RaceRecord {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public boolean hasCourse() {
|
||||
return hasCourse;
|
||||
}
|
||||
|
||||
public boolean hasStartlist() {
|
||||
return hasStartlist;
|
||||
}
|
||||
}
|
||||
+4
@@ -21,4 +21,8 @@ public interface RaceSpecificMessageLoader {
|
||||
Iterable<Race> getRaces();
|
||||
|
||||
Race getRace(String raceID);
|
||||
|
||||
boolean hasRaceStartlist(String raceID);
|
||||
|
||||
boolean hasRaceCourse(String raceID);
|
||||
}
|
||||
+5
-1
@@ -19,8 +19,12 @@ public interface SailMasterConnector {
|
||||
|
||||
Course getCourse(String raceID) throws UnknownHostException, IOException, InterruptedException;
|
||||
|
||||
boolean hasCourse(String raceID);
|
||||
|
||||
StartList getStartList(String raceID) throws UnknownHostException, IOException, InterruptedException;
|
||||
|
||||
|
||||
boolean hasStartlist(String raceID);
|
||||
|
||||
TimePoint getStartTime(String raceID) throws UnknownHostException, IOException, ParseException, InterruptedException;
|
||||
|
||||
Distance getDistanceToMark(String raceID, int markIndex, String boatID) throws UnknownHostException, IOException, InterruptedException;
|
||||
|
||||
+18
@@ -606,6 +606,24 @@ public class SailMasterConnectorImpl extends SailMasterTransceiverImpl implement
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCourse(String raceID) {
|
||||
boolean result = false;
|
||||
if (messageLoader != null) {
|
||||
result = messageLoader.hasRaceCourse(raceID);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasStartlist(String raceID) {
|
||||
boolean result = false;
|
||||
if (messageLoader != null) {
|
||||
result = messageLoader.hasRaceStartlist(raceID);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<Race> parseAvailableRacesMessage(SailMasterMessage availableRacesMessage) {
|
||||
assertMessageType(MessageType.RAC, availableRacesMessage);
|
||||
int count = Integer.valueOf(availableRacesMessage.getSections()[1]);
|
||||
|
||||
+16
-11
@@ -46,14 +46,9 @@ import com.sap.sailing.gwt.ui.shared.SwissTimingConfigurationDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SwissTimingRaceRecordDTO;
|
||||
|
||||
/**
|
||||
* Allows the user to start and stop tracking of events, regattas and races using the TracTrac connector. In particular,
|
||||
* Allows the user to start and stop tracking of races using the SwissTiming connector. In particular,
|
||||
* previously configured connections can be retrieved from a drop-down list which then pre-populates all connection
|
||||
* parameters. The user can also choose to enter connection information manually. Using a "hierarchical" entry system
|
||||
* comparable to that of, e.g., the Eclipse CVS connection setup wizard, components entered will be used to
|
||||
* automatically assemble the full URL which can still be overwritten manually. There is a propagation order across the
|
||||
* fields. Hostname propagates to JSON URL, Live URI and Stored URI. Port Live Data propagates to Port Stored Data,
|
||||
* incremented by one. The ports propagate to Live URI and Stored URI, respectively. The event name propagates to the
|
||||
* JSON URL.
|
||||
* parameters. The user can also choose to enter connection information manually.
|
||||
*
|
||||
* @author Axel Uhl (D043530)
|
||||
*
|
||||
@@ -166,7 +161,16 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
|
||||
}
|
||||
};
|
||||
|
||||
TextColumn<SwissTimingRaceRecordDTO> raceStartTrackingColumn = new TextColumn<SwissTimingRaceRecordDTO>() {
|
||||
TextColumn<SwissTimingRaceRecordDTO> raceStateColumn = new TextColumn<SwissTimingRaceRecordDTO>() {
|
||||
@Override
|
||||
public String getValue(SwissTimingRaceRecordDTO object) {
|
||||
String result = object.hasCourse ? "C" : "";
|
||||
result += object.hasStartlist ? "S" : "";
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
TextColumn<SwissTimingRaceRecordDTO> raceStartTimeColumn = new TextColumn<SwissTimingRaceRecordDTO>() {
|
||||
@Override
|
||||
public String getValue(SwissTimingRaceRecordDTO object) {
|
||||
return object.raceStartTime==null?"":dateFormatter.render(object.raceStartTime) + " " + timeFormatter.render(object.raceStartTime);
|
||||
@@ -228,14 +232,15 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
|
||||
trackPanel.setStyleName("paddedPanel");
|
||||
|
||||
raceNameColumn.setSortable(true);
|
||||
raceStartTrackingColumn.setSortable(true);
|
||||
raceStartTimeColumn.setSortable(true);
|
||||
|
||||
AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
|
||||
raceTable = new CellTable<SwissTimingRaceRecordDTO>(/* pageSize */ 10000, tableRes);
|
||||
raceTable.addColumn(raceNameColumn, stringConstants.name());
|
||||
raceTable.addColumn(raceDescriptionColumn, stringConstants.description());
|
||||
raceTable.addColumn(boatClassColumn, stringConstants.boatClass());
|
||||
raceTable.addColumn(raceStartTrackingColumn, stringConstants.raceStartTimeColumn());
|
||||
raceTable.addColumn(raceStateColumn, stringConstants.status());
|
||||
raceTable.addColumn(raceStartTimeColumn, stringConstants.startTime());
|
||||
raceTable.setWidth("300px");
|
||||
raceTable.setSelectionModel(new MultiSelectionModel<SwissTimingRaceRecordDTO>() {});
|
||||
|
||||
@@ -244,7 +249,7 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
|
||||
|
||||
raceList = new ListDataProvider<SwissTimingRaceRecordDTO>();
|
||||
raceList.addDataDisplay(raceTable);
|
||||
Handler columnSortHandler = getRaceTableColumnSortHandler(raceList.getList(), raceNameColumn, raceStartTrackingColumn);
|
||||
Handler columnSortHandler = getRaceTableColumnSortHandler(raceList.getList(), raceNameColumn, raceStartTimeColumn);
|
||||
raceTable.addColumnSortHandler(columnSortHandler);
|
||||
|
||||
Label lblTrackSettings = new Label(stringConstants.trackSettings());
|
||||
|
||||
+2
@@ -2028,6 +2028,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
BoatClass boatClass = com.sap.sailing.domain.swisstimingadapter.DomainFactory.INSTANCE.getRaceTypeFromRaceID(rr.getRaceID()).getBoatClass();
|
||||
swissTimingRaceRecordDTO.boatClass = boatClass != null ? boatClass.getName() : null;
|
||||
swissTimingRaceRecordDTO.discipline = rr.getRaceID().length() >= 3 ? rr.getRaceID().substring(2, 3) : null;
|
||||
swissTimingRaceRecordDTO.hasCourse = rr.hasCourse();
|
||||
swissTimingRaceRecordDTO.hasStartlist = rr.hasStartlist();
|
||||
result.add(swissTimingRaceRecordDTO);
|
||||
}
|
||||
return result;
|
||||
|
||||
+3
@@ -13,6 +13,9 @@ public class SwissTimingRaceRecordDTO implements IsSerializable {
|
||||
public String boatClass;
|
||||
public String discipline;
|
||||
|
||||
public boolean hasCourse;
|
||||
public boolean hasStartlist;
|
||||
|
||||
public SwissTimingRaceRecordDTO() {}
|
||||
|
||||
public SwissTimingRaceRecordDTO(String id, String description, Date raceStartTime) {
|
||||
|
||||
+7
-3
@@ -773,9 +773,13 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
SailMasterConnector swissTimingConnector = swissTimingFactory.getOrCreateSailMasterConnector(hostname, port,
|
||||
swissTimingAdapterPersistence, canSendRequests);
|
||||
for (Race race : swissTimingConnector.getRaces()) {
|
||||
TimePoint startTime = swissTimingConnector.getStartTime(race.getRaceID());
|
||||
result.add(new com.sap.sailing.domain.swisstimingadapter.RaceRecord(race.getRaceID(),
|
||||
race.getDescription(), startTime == null ? null : startTime.asDate()));
|
||||
String raceID = race.getRaceID();
|
||||
TimePoint startTime = swissTimingConnector.getStartTime(raceID);
|
||||
boolean hasCourse = swissTimingConnector.hasCourse(raceID);
|
||||
boolean hasStartlist = swissTimingConnector.hasStartlist(raceID);
|
||||
result.add(new com.sap.sailing.domain.swisstimingadapter.RaceRecord(raceID,
|
||||
race.getDescription(), startTime == null ? null : startTime.asDate(),
|
||||
hasCourse, hasStartlist));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user