Merge remote-tracking branch 'server/master'

This commit is contained in:
Axel Uhl committed 2013-09-12 17:21:21 +02:00
commit 43d278ae19
11 files changed
+105 -22

No files matched your search

+6 -6
View File
@@ -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
@@ -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());
@@ -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;
}
}
@@ -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;
}
}
@@ -21,4 +21,8 @@ public interface RaceSpecificMessageLoader {
Iterable<Race> getRaces();
Race getRace(String raceID);
boolean hasRaceStartlist(String raceID);
boolean hasRaceCourse(String raceID);
}
@@ -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;
@@ -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]);
@@ -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());
@@ -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;
@@ -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) {
@@ -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;
}