mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-20 19:20:04 +00:00
Merge remote-tracking branch 'origin/master' into ribdashboard
This commit is contained in:
commit
adea2c19b5
58 files changed
+721
-243
No files matched your search
+1
@@ -16,6 +16,7 @@ public enum Permission implements com.sap.sse.security.shared.Permission {
|
||||
MANAGE_STRUCTURE_IMPORT_URLS,
|
||||
MANAGE_MEDIA,
|
||||
MANAGE_SAILING_SERVER_INSTANCES,
|
||||
MANAGE_LOCAL_SERVER_INSTANCE,
|
||||
MANAGE_REPLICATION,
|
||||
MANAGE_MASTERDATA_IMPORT,
|
||||
MANAGE_DEVICE_CONFIGURATION,
|
||||
|
||||
+3
@@ -16,6 +16,7 @@ import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RegattaRegistry;
|
||||
import com.sap.sailing.domain.base.RemoteSailingServerReference;
|
||||
import com.sap.sailing.domain.base.SailingServerConfiguration;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
@@ -109,6 +110,8 @@ public interface DomainObjectFactory {
|
||||
*/
|
||||
void loadLeaderboardGroupLinksForEvents(EventResolver eventResolver, LeaderboardGroupResolver leaderboardGroupResolver);
|
||||
|
||||
SailingServerConfiguration loadServerConfiguration();
|
||||
|
||||
Iterable<RemoteSailingServerReference> loadAllRemoteSailingServerReferences();
|
||||
|
||||
Regatta loadRegatta(String name, TrackedRegattaRegistry trackedRegattaRegistry);
|
||||
|
||||
+3
@@ -10,6 +10,7 @@ import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RemoteSailingServerReference;
|
||||
import com.sap.sailing.domain.base.SailingServerConfiguration;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
|
||||
@@ -93,6 +94,8 @@ public interface MongoObjectFactory {
|
||||
*/
|
||||
void removeEvent(Serializable id);
|
||||
|
||||
void storeServerConfiguration(SailingServerConfiguration serverConfiguration);
|
||||
|
||||
/**
|
||||
* Stores a registered sailing server
|
||||
* @param serves the servers to store
|
||||
|
||||
+6
-1
@@ -43,7 +43,12 @@ public enum CollectionNames {
|
||||
* Stores the registered sailing servers.
|
||||
*/
|
||||
SAILING_SERVERS,
|
||||
|
||||
|
||||
/**
|
||||
* Stores the configuration of the server instance.
|
||||
*/
|
||||
SERVER_CONFIGURATION,
|
||||
|
||||
/**
|
||||
* Stores regatta definitions including their series layout and fleets and race columns. Regattas can reference
|
||||
* the event from the {@link #EVENTS} collection to which they belong.
|
||||
|
||||
+24
-4
@@ -35,11 +35,11 @@ import com.mongodb.util.JSON;
|
||||
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.CompetitorResults;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEndOfTrackingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLog;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEndOfTrackingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEventRestoreFactory;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent;
|
||||
@@ -102,6 +102,7 @@ import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RegattaRegistry;
|
||||
import com.sap.sailing.domain.base.RemoteSailingServerReference;
|
||||
import com.sap.sailing.domain.base.SailingServerConfiguration;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
@@ -115,6 +116,7 @@ import com.sap.sailing.domain.base.impl.EventImpl;
|
||||
import com.sap.sailing.domain.base.impl.FleetImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.base.impl.RemoteSailingServerReferenceImpl;
|
||||
import com.sap.sailing.domain.base.impl.SailingServerConfigurationImpl;
|
||||
import com.sap.sailing.domain.base.impl.SeriesImpl;
|
||||
import com.sap.sailing.domain.base.impl.VenueImpl;
|
||||
import com.sap.sailing.domain.base.impl.WaypointImpl;
|
||||
@@ -930,8 +932,26 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SailingServerConfiguration loadServerConfiguration() {
|
||||
SailingServerConfiguration result;
|
||||
DBCollection serverCollection = database.getCollection(CollectionNames.SERVER_CONFIGURATION.name());
|
||||
DBObject theServer = serverCollection.findOne();
|
||||
if (theServer != null) {
|
||||
result = loadServerConfiguration(theServer);
|
||||
} else {
|
||||
// create a default configuration
|
||||
result = new SailingServerConfigurationImpl(false);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private RemoteSailingServerReference loadSailingSever(DBObject serverDBObject) {
|
||||
private SailingServerConfiguration loadServerConfiguration(DBObject serverDBObject) {
|
||||
boolean isStandaloneServer = (Boolean) serverDBObject.get(FieldNames.SERVER_IS_STANDALONE.name());
|
||||
return new SailingServerConfigurationImpl(isStandaloneServer);
|
||||
}
|
||||
|
||||
private RemoteSailingServerReference loadRemoteSailingSever(DBObject serverDBObject) {
|
||||
RemoteSailingServerReference result = null;
|
||||
String name = (String) serverDBObject.get(FieldNames.SERVER_NAME.name());
|
||||
String urlAsString = (String) serverDBObject.get(FieldNames.SERVER_URL.name());
|
||||
@@ -950,8 +970,8 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
DBCollection serverCollection = database.getCollection(CollectionNames.SAILING_SERVERS.name());
|
||||
try {
|
||||
for (DBObject o : serverCollection.find()) {
|
||||
if (loadSailingSever(o) != null) {
|
||||
result.add(loadSailingSever(o));
|
||||
if (loadRemoteSailingSever(o) != null) {
|
||||
result.add(loadRemoteSailingSever(o));
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
+4
-1
@@ -109,10 +109,13 @@ public enum FieldNames {
|
||||
REGATTA_LOG_REVOKED_REASON, REGATTA_LOG_COMPETITOR_ID, REGATTA_LOG_DEVICE_MAPPING_EVENT_ID, REGATTA_LOG_CLOSING_TIMEPOINT,
|
||||
REGATTA_LOG_FROM, REGATTA_LOG_TO, REGATTA_LOG_EVENT,
|
||||
|
||||
// sailing server
|
||||
// remote server reference fields
|
||||
SERVER_NAME,
|
||||
SERVER_URL,
|
||||
|
||||
// local server instance fields
|
||||
SERVER_IS_STANDALONE,
|
||||
|
||||
// configurations
|
||||
CONFIGURATION_MATCHER, CONFIGURATION_CONFIG, CONFIGURATION_MATCHER_ID, CONFIGURATION_MATCHER_TYPE, CONFIGURATION_MATCHER_CLIENTS,
|
||||
CONFIGURATION_CONFIG_ALLOWED_COURSE_AREA_NAMES, CONFIGURATION_CONFIG_MIN_ROUNDS, CONFIGURATION_CONFIG_MAX_ROUNDS, CONFIGURATION_CONFIG_RESULTS_MAIL,
|
||||
|
||||
+17
-3
@@ -19,14 +19,14 @@ import com.mongodb.DBObject;
|
||||
import com.mongodb.WriteConcern;
|
||||
import com.mongodb.util.JSON;
|
||||
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEndOfTrackingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFixedMarkPassingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEndOfTrackingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningListChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFixedMarkPassingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogGateLineOpeningTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogPassChangeEvent;
|
||||
@@ -37,8 +37,8 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogRevokeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogStartOfTrackingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogSuppressedMarkPassingsEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.scoring.RaceLogAdditionalScoringInformationEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogCloseOpenEndedDeviceMappingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDefineMarkEvent;
|
||||
@@ -68,6 +68,7 @@ import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RemoteSailingServerReference;
|
||||
import com.sap.sailing.domain.base.SailingServerConfiguration;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
@@ -501,6 +502,19 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
leaderboardGroupCollection.update(query, update, /* upsert */ true, /* multi */ false, WriteConcern.SAFE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void storeServerConfiguration(SailingServerConfiguration serverConfiguration) {
|
||||
DBCollection serverCollection = database.getCollection(CollectionNames.SERVER_CONFIGURATION.name());
|
||||
DBObject newServerConfig = new BasicDBObject();
|
||||
newServerConfig.put(FieldNames.SERVER_IS_STANDALONE.name(), serverConfiguration.isStandaloneServer());
|
||||
DBObject currentServerConfig = serverCollection.findOne();
|
||||
if(currentServerConfig != null) {
|
||||
serverCollection.update(currentServerConfig, newServerConfig, /* upsrt */ true, /* multi */ false, WriteConcern.SAFE);
|
||||
} else {
|
||||
serverCollection.save(newServerConfig);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void storeSailingServer(RemoteSailingServerReference server) {
|
||||
DBCollection serverCollection = database.getCollection(CollectionNames.SAILING_SERVERS.name());
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.sap.sailing.domain.base;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* Represents the configuration of an (local) instance of a sailing server.
|
||||
*
|
||||
* @author Frank
|
||||
*
|
||||
*/
|
||||
public interface SailingServerConfiguration extends Serializable {
|
||||
boolean isStandaloneServer();
|
||||
|
||||
void setStandaloneServer(boolean isStandaloneServer);
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.SailingServerConfiguration;
|
||||
|
||||
public class SailingServerConfigurationImpl implements SailingServerConfiguration {
|
||||
private static final long serialVersionUID = -639945748229124558L;
|
||||
|
||||
/** indicates if the server is running in standalone mode or not */
|
||||
private boolean isStandaloneServer;
|
||||
|
||||
public SailingServerConfigurationImpl(boolean isStandaloneServer) {
|
||||
this.isStandaloneServer = isStandaloneServer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStandaloneServer() {
|
||||
return isStandaloneServer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStandaloneServer(boolean isStandaloneServer) {
|
||||
this.isStandaloneServer = isStandaloneServer;
|
||||
}
|
||||
}
|
||||
@@ -63,6 +63,16 @@
|
||||
<url-pattern>/service/sailing</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<display-name>Server Configuration Service</display-name>
|
||||
<servlet-name>ServerConfigurationService</servlet-name>
|
||||
<servlet-class>com.sap.sailing.gwt.server.ServerConfigurationServiceImpl</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>ServerConfigurationService</servlet-name>
|
||||
<url-pattern>/service/serverconfiguration</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<display-name>Dispatch Service</display-name>
|
||||
<servlet-name>DispatchService</servlet-name>
|
||||
|
||||
-6
@@ -1,14 +1,11 @@
|
||||
package com.sap.sailing.gwt.autoplay.client;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.user.client.rpc.ServiceDefTarget;
|
||||
import com.sap.sailing.gwt.autoplay.client.app.AutoPlayAppActivityMapper;
|
||||
import com.sap.sailing.gwt.autoplay.client.app.AutoPlayAppClientFactory;
|
||||
import com.sap.sailing.gwt.autoplay.client.app.AutoPlayAppHistoryMapper;
|
||||
import com.sap.sailing.gwt.common.client.SharedResources;
|
||||
import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.gwt.client.EntryPointHelper;
|
||||
import com.sap.sse.gwt.client.mvp.AbstractMvpEntryPoint;
|
||||
|
||||
public class AutoPlayEntryPoint extends AbstractMvpEntryPoint<StringMessages> {
|
||||
@@ -16,9 +13,6 @@ public class AutoPlayEntryPoint extends AbstractMvpEntryPoint<StringMessages> {
|
||||
@Override
|
||||
public void doOnModuleLoad() {
|
||||
AutoPlayAppClientFactory clientFactory = GWT.create(AutoPlayAppClientFactory.class);
|
||||
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) clientFactory.getSailingService(), RemoteServiceMappingConstants.sailingServiceRemotePath);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) clientFactory.getMediaService(), RemoteServiceMappingConstants.mediaServiceRemotePath);
|
||||
|
||||
AutoPlayAppHistoryMapper applicationHistoryMapper = GWT.create(AutoPlayAppHistoryMapper.class);
|
||||
initMvp(clientFactory, applicationHistoryMapper, new AutoPlayAppActivityMapper(clientFactory));
|
||||
|
||||
+8
-2
@@ -3,14 +3,17 @@ package com.sap.sailing.gwt.autoplay.client.app;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.place.shared.Place;
|
||||
import com.google.gwt.place.shared.PlaceController;
|
||||
import com.google.gwt.user.client.rpc.ServiceDefTarget;
|
||||
import com.google.web.bindery.event.shared.EventBus;
|
||||
import com.sap.sailing.gwt.autoplay.client.place.start.StartPlace;
|
||||
import com.sap.sailing.gwt.ui.client.HomeService;
|
||||
import com.sap.sailing.gwt.ui.client.HomeServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.MediaService;
|
||||
import com.sap.sailing.gwt.ui.client.MediaServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants;
|
||||
import com.sap.sailing.gwt.ui.client.SailingService;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sse.gwt.client.EntryPointHelper;
|
||||
import com.sap.sse.security.ui.client.SecureClientFactoryImpl;
|
||||
|
||||
public abstract class AbstractApplicationClientFactory extends SecureClientFactoryImpl implements AutoPlayAppClientFactory {
|
||||
@@ -19,12 +22,15 @@ public abstract class AbstractApplicationClientFactory extends SecureClientFacto
|
||||
private final MediaServiceAsync mediaService;
|
||||
private final PlaceNavigator navigator;
|
||||
|
||||
public AbstractApplicationClientFactory(ApplicationTopLevelView root, EventBus eventBus, PlaceController placeController) {
|
||||
public AbstractApplicationClientFactory(ApplicationTopLevelView root, EventBus eventBus, PlaceController placeController, PlaceNavigator navigator) {
|
||||
super(root, eventBus, placeController);
|
||||
navigator = new PlaceNavigatorImpl(placeController);
|
||||
this.navigator = navigator;
|
||||
sailingService = GWT.create(SailingService.class);
|
||||
homeService = GWT.create(HomeService.class);
|
||||
mediaService = GWT.create(MediaService.class);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) sailingService, RemoteServiceMappingConstants.sailingServiceRemotePath);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) homeService, RemoteServiceMappingConstants.homeServiceRemotePath);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) mediaService, RemoteServiceMappingConstants.mediaServiceRemotePath);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+5
-1
@@ -20,9 +20,13 @@ public class DesktopApplicationClientFactory extends AbstractApplicationClientFa
|
||||
}
|
||||
|
||||
private DesktopApplicationClientFactory(EventBus eventBus, PlaceController placeController) {
|
||||
super(new DesktopApplicationView(new PlaceNavigatorImpl(placeController)), eventBus, placeController);
|
||||
this(eventBus, placeController, new PlaceNavigatorImpl(placeController));
|
||||
}
|
||||
|
||||
private DesktopApplicationClientFactory(EventBus eventBus, PlaceController placeController, PlaceNavigator navigator) {
|
||||
super(new DesktopApplicationView(navigator), eventBus, placeController, navigator);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StartView createStartView() {
|
||||
return new DesktopStartView(getPlaceNavigator(), getEventBus());
|
||||
|
||||
+21
-3
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.gwt.home.desktop;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.rpc.ServiceDefTarget;
|
||||
import com.sap.sailing.gwt.common.client.SharedResources;
|
||||
import com.sap.sailing.gwt.home.desktop.app.DesktopActivityMapper;
|
||||
@@ -8,6 +9,8 @@ import com.sap.sailing.gwt.home.desktop.app.DesktopClientFactory;
|
||||
import com.sap.sailing.gwt.home.desktop.app.TabletAndDesktopApplicationClientFactory;
|
||||
import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
|
||||
import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants;
|
||||
import com.sap.sailing.gwt.ui.client.ServerConfigurationService;
|
||||
import com.sap.sailing.gwt.ui.client.ServerConfigurationServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.gwt.client.EntryPointHelper;
|
||||
import com.sap.sse.gwt.client.mvp.AbstractMvpEntryPoint;
|
||||
@@ -20,9 +23,24 @@ public class DesktopEntryPoint extends AbstractMvpEntryPoint<StringMessages> {
|
||||
CommonControlsCSS.ensureInjected();
|
||||
Highcharts.ensureInjected();
|
||||
|
||||
DesktopClientFactory clientFactory = new TabletAndDesktopApplicationClientFactory();
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) clientFactory.getSailingService(), RemoteServiceMappingConstants.sailingServiceRemotePath);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) clientFactory.getHomeService(), RemoteServiceMappingConstants.homeServiceRemotePath);
|
||||
ServerConfigurationServiceAsync serverConfigService = GWT.create(ServerConfigurationService.class);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) serverConfigService, RemoteServiceMappingConstants.serverConfigurationServiceRemotePath);
|
||||
|
||||
serverConfigService.isStandaloneServer(new AsyncCallback<Boolean>() {
|
||||
@Override
|
||||
public void onSuccess(Boolean result) {
|
||||
createDesktopApplication(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
createDesktopApplication(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void createDesktopApplication(boolean isStandaloneServer) {
|
||||
DesktopClientFactory clientFactory = new TabletAndDesktopApplicationClientFactory(isStandaloneServer);
|
||||
ApplicationHistoryMapper applicationHistoryMapper = GWT.create(ApplicationHistoryMapper.class);
|
||||
initMvp(clientFactory, applicationHistoryMapper, new DesktopActivityMapper(clientFactory));
|
||||
|
||||
|
||||
+8
-2
@@ -3,14 +3,17 @@ package com.sap.sailing.gwt.home.desktop.app;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.place.shared.Place;
|
||||
import com.google.gwt.place.shared.PlaceController;
|
||||
import com.google.gwt.user.client.rpc.ServiceDefTarget;
|
||||
import com.google.web.bindery.event.shared.EventBus;
|
||||
import com.sap.sailing.gwt.home.client.place.start.StartPlace;
|
||||
import com.sap.sailing.gwt.ui.client.HomeService;
|
||||
import com.sap.sailing.gwt.ui.client.HomeServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.MediaService;
|
||||
import com.sap.sailing.gwt.ui.client.MediaServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants;
|
||||
import com.sap.sailing.gwt.ui.client.SailingService;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sse.gwt.client.EntryPointHelper;
|
||||
import com.sap.sse.security.ui.client.SecureClientFactoryImpl;
|
||||
|
||||
public abstract class AbstractApplicationClientFactory extends
|
||||
@@ -21,12 +24,15 @@ public abstract class AbstractApplicationClientFactory extends
|
||||
private final DesktopPlacesNavigator navigator;
|
||||
|
||||
public AbstractApplicationClientFactory(ApplicationTopLevelView root, EventBus eventBus,
|
||||
PlaceController placeController) {
|
||||
PlaceController placeController, final DesktopPlacesNavigator navigator) {
|
||||
super(root, eventBus, placeController);
|
||||
navigator = new DesktopPlacesNavigator(placeController);
|
||||
this.navigator = navigator;
|
||||
sailingService = GWT.create(SailingService.class);
|
||||
homeService = GWT.create(HomeService.class);
|
||||
mediaService = GWT.create(MediaService.class);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) sailingService, RemoteServiceMappingConstants.sailingServiceRemotePath);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) homeService, RemoteServiceMappingConstants.homeServiceRemotePath);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) mediaService, RemoteServiceMappingConstants.mediaServiceRemotePath);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
-55
@@ -1,55 +0,0 @@
|
||||
package com.sap.sailing.gwt.home.desktop.app;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.place.shared.Place;
|
||||
import com.google.gwt.place.shared.PlaceController;
|
||||
import com.google.gwt.user.client.History;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
|
||||
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
|
||||
import com.sap.sailing.gwt.home.shared.app.PlaceNavigator;
|
||||
|
||||
public abstract class AbstractPlaceNavigator implements PlaceNavigator {
|
||||
protected final PlaceController placeController;
|
||||
|
||||
private final ApplicationHistoryMapper mapper = GWT.create(ApplicationHistoryMapper.class);
|
||||
|
||||
public final static String DEFAULT_SAPSAILING_SERVER = "www.sapsailing.com";
|
||||
public final static String DEFAULT_SAPSAILING_DEV_SERVER = "dev.sapsailing.com";
|
||||
public final static String DEFAULT_SAPSAILING_SERVER_URL = "http://" + DEFAULT_SAPSAILING_SERVER;
|
||||
|
||||
protected AbstractPlaceNavigator(PlaceController placeController) {
|
||||
this.placeController = placeController;
|
||||
}
|
||||
|
||||
public <T extends Place> void goToPlace(PlaceNavigation<T> placeNavigation) {
|
||||
if(placeNavigation.isRemotePlace()) {
|
||||
String destinationUrl = placeNavigation.getTargetUrl();
|
||||
History.newItem(History.getToken(), false);
|
||||
Window.Location.replace(destinationUrl);
|
||||
} else {
|
||||
placeController.goTo(placeNavigation.getPlace());
|
||||
}
|
||||
}
|
||||
|
||||
protected <T extends Place> PlaceNavigation<T> createLocalPlaceNavigation(T destinationPlace) {
|
||||
return new PlaceNavigation<T>(null, destinationPlace, false, this, mapper);
|
||||
}
|
||||
|
||||
|
||||
protected <T extends Place> PlaceNavigation<T> createGlobalPlaceNavigation(T destinationPlace) {
|
||||
return new PlaceNavigation<T>(destinationPlace, this, mapper);
|
||||
}
|
||||
|
||||
|
||||
protected <T extends Place> PlaceNavigation<T> createPlaceNavigation(String baseUrl, boolean isOnRemoteServer,
|
||||
T destinationPlace) {
|
||||
return new PlaceNavigation<T>(baseUrl, destinationPlace, isOnRemoteServer, this, mapper);
|
||||
}
|
||||
|
||||
|
||||
public <T extends Place> void pushPlaceToHistoryStack(T destinationPlace) {
|
||||
String placeHistoryToken = mapper.getToken(destinationPlace);
|
||||
History.newItem(placeHistoryToken, false);
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -22,13 +22,14 @@ import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.start.StartPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
|
||||
import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator;
|
||||
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
|
||||
import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory;
|
||||
|
||||
public class DesktopPlacesNavigator extends AbstractPlaceNavigator {
|
||||
|
||||
protected DesktopPlacesNavigator(PlaceController placeController) {
|
||||
super(placeController);
|
||||
protected DesktopPlacesNavigator(PlaceController placeController, boolean isStandaloneServer) {
|
||||
super(placeController, isStandaloneServer);
|
||||
}
|
||||
|
||||
public PlaceNavigation<StartPlace> getHomeNavigation() {
|
||||
|
||||
+10
-6
@@ -25,16 +25,20 @@ import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystemImpl;
|
||||
public class TabletAndDesktopApplicationClientFactory extends AbstractApplicationClientFactory implements DesktopClientFactory {
|
||||
private final DispatchSystem dispatch = new DispatchSystemImpl();
|
||||
|
||||
public TabletAndDesktopApplicationClientFactory() {
|
||||
this(new SimpleEventBus());
|
||||
public TabletAndDesktopApplicationClientFactory(boolean isStandaloneServer) {
|
||||
this(new SimpleEventBus(), isStandaloneServer);
|
||||
}
|
||||
|
||||
private TabletAndDesktopApplicationClientFactory(EventBus eventBus) {
|
||||
this(eventBus, new PlaceController(eventBus));
|
||||
private TabletAndDesktopApplicationClientFactory(EventBus eventBus, boolean isStandaloneServer) {
|
||||
this(eventBus, new PlaceController(eventBus), isStandaloneServer);
|
||||
}
|
||||
|
||||
private TabletAndDesktopApplicationClientFactory(EventBus eventBus, PlaceController placeController) {
|
||||
super(new TabletAndDesktopApplicationView(new DesktopPlacesNavigator(placeController), eventBus), eventBus, placeController);
|
||||
private TabletAndDesktopApplicationClientFactory(EventBus eventBus, PlaceController placeController, boolean isStandaloneServer) {
|
||||
this(eventBus, placeController, new DesktopPlacesNavigator(placeController, isStandaloneServer));
|
||||
}
|
||||
|
||||
private TabletAndDesktopApplicationClientFactory(EventBus eventBus, PlaceController placeController, DesktopPlacesNavigator placesNavigator) {
|
||||
super(new TabletAndDesktopApplicationView(placesNavigator, eventBus), eventBus, placeController, placesNavigator);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+25
-1
@@ -1,11 +1,17 @@
|
||||
package com.sap.sailing.gwt.home.mobile;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.rpc.ServiceDefTarget;
|
||||
import com.sap.sailing.gwt.home.mobile.app.MobileActivityMapper;
|
||||
import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
|
||||
import com.sap.sailing.gwt.home.mobile.resources.SharedResources;
|
||||
import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
|
||||
import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants;
|
||||
import com.sap.sailing.gwt.ui.client.ServerConfigurationService;
|
||||
import com.sap.sailing.gwt.ui.client.ServerConfigurationServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.gwt.client.EntryPointHelper;
|
||||
import com.sap.sse.gwt.client.mvp.AbstractMvpEntryPoint;
|
||||
|
||||
public class MobileEntryPoint extends AbstractMvpEntryPoint<StringMessages> {
|
||||
@@ -16,7 +22,25 @@ public class MobileEntryPoint extends AbstractMvpEntryPoint<StringMessages> {
|
||||
SharedResources sRes = GWT.create(SharedResources.class);
|
||||
sRes.mediaCss().ensureInjected();
|
||||
sRes.mainCss().ensureInjected();
|
||||
MobileApplicationClientFactory clientFactory = new MobileApplicationClientFactory();
|
||||
|
||||
ServerConfigurationServiceAsync serverConfigService = GWT.create(ServerConfigurationService.class);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) serverConfigService, RemoteServiceMappingConstants.serverConfigurationServiceRemotePath);
|
||||
|
||||
serverConfigService.isStandaloneServer(new AsyncCallback<Boolean>() {
|
||||
@Override
|
||||
public void onSuccess(Boolean result) {
|
||||
createMobileApplication(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
createMobileApplication(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void createMobileApplication(boolean isStandaloneServer) {
|
||||
MobileApplicationClientFactory clientFactory = new MobileApplicationClientFactory(isStandaloneServer);
|
||||
ApplicationHistoryMapper applicationHistoryMapper = GWT.create(ApplicationHistoryMapper.class);
|
||||
initMvp(clientFactory, applicationHistoryMapper, new MobileActivityMapper(clientFactory));
|
||||
}
|
||||
|
||||
+20
-44
@@ -4,11 +4,10 @@ import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.place.shared.Place;
|
||||
import com.google.gwt.place.shared.PlaceController;
|
||||
import com.google.gwt.user.client.rpc.ServiceDefTarget;
|
||||
import com.google.gwt.user.client.ui.AcceptsOneWidget;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.google.web.bindery.event.shared.EventBus;
|
||||
import com.google.web.bindery.event.shared.SimpleEventBus;
|
||||
import com.sap.sailing.gwt.home.client.place.start.StartPlace;
|
||||
import com.sap.sailing.gwt.home.desktop.app.ApplicationTopLevelView;
|
||||
import com.sap.sailing.gwt.home.mobile.places.MainView;
|
||||
import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
|
||||
import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystemImpl;
|
||||
@@ -16,40 +15,42 @@ import com.sap.sailing.gwt.ui.client.HomeService;
|
||||
import com.sap.sailing.gwt.ui.client.HomeServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants;
|
||||
import com.sap.sse.gwt.client.EntryPointHelper;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.security.ui.client.SecureClientFactoryImpl;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author pgtaboada
|
||||
*
|
||||
*/
|
||||
public class MobileApplicationClientFactory implements com.sap.sse.gwt.client.mvp.ClientFactory {
|
||||
public class MobileApplicationClientFactory extends SecureClientFactoryImpl {
|
||||
private final HomeServiceAsync homeService;
|
||||
private final PlaceController placeController;
|
||||
private final MobilePlacesNavigator navigator;
|
||||
private final SimpleEventBus eventBus;
|
||||
private final DispatchSystem dispatch = new DispatchSystemImpl();
|
||||
private MainView mainView;
|
||||
|
||||
public MobileApplicationClientFactory() {
|
||||
this(new SimpleEventBus());
|
||||
public MobileApplicationClientFactory(boolean isStandaloneServer) {
|
||||
this(new SimpleEventBus(), isStandaloneServer);
|
||||
}
|
||||
|
||||
public MobileApplicationClientFactory(SimpleEventBus eventBus) {
|
||||
this(eventBus, new PlaceController(eventBus));
|
||||
private MobileApplicationClientFactory(SimpleEventBus eventBus, boolean isStandaloneServer) {
|
||||
this(eventBus, new PlaceController(eventBus), isStandaloneServer);
|
||||
}
|
||||
|
||||
public MobileApplicationClientFactory(SimpleEventBus eventBus, PlaceController placeController) {
|
||||
this.eventBus = eventBus;
|
||||
this.placeController = placeController;
|
||||
private MobileApplicationClientFactory(EventBus eventBus, PlaceController placeController, boolean isStandaloneServer) {
|
||||
this(eventBus, placeController, new MobilePlacesNavigator(placeController, isStandaloneServer));
|
||||
}
|
||||
|
||||
private MobileApplicationClientFactory(EventBus eventBus, PlaceController placeController, MobilePlacesNavigator navigator) {
|
||||
this(new MainView(navigator, eventBus), eventBus, placeController, navigator);
|
||||
}
|
||||
|
||||
public MobileApplicationClientFactory(ApplicationTopLevelView root, EventBus eventBus,
|
||||
PlaceController placeController, final MobilePlacesNavigator navigator) {
|
||||
super(root, eventBus, placeController);
|
||||
this.navigator = navigator;
|
||||
this.homeService = GWT.create(HomeService.class);
|
||||
this.navigator = new MobilePlacesNavigator(placeController);
|
||||
mainView = new MainView(this);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) homeService,
|
||||
RemoteServiceMappingConstants.homeServiceRemotePath);
|
||||
EntryPointHelper.registerASyncService((ServiceDefTarget) homeService, RemoteServiceMappingConstants.homeServiceRemotePath);
|
||||
}
|
||||
|
||||
|
||||
public MobilePlacesNavigator getNavigator() {
|
||||
return navigator;
|
||||
}
|
||||
@@ -58,35 +59,10 @@ public class MobileApplicationClientFactory implements com.sap.sse.gwt.client.mv
|
||||
return homeService;
|
||||
}
|
||||
|
||||
public PlaceController getPlaceController() {
|
||||
return placeController;
|
||||
}
|
||||
|
||||
public DispatchSystem getDispatch() {
|
||||
return dispatch;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ErrorReporter getErrorReporter() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventBus getEventBus() {
|
||||
return eventBus;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Widget getRoot() {
|
||||
return mainView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcceptsOneWidget getContent() {
|
||||
return mainView.getContent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Place getDefaultPlace() {
|
||||
return new StartPlace();
|
||||
|
||||
+3
-2
@@ -18,13 +18,14 @@ import com.sap.sailing.gwt.home.client.place.start.StartPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
|
||||
import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace;
|
||||
import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator;
|
||||
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO;
|
||||
|
||||
public class MobilePlacesNavigator extends AbstractPlaceNavigator {
|
||||
|
||||
protected MobilePlacesNavigator(PlaceController placeController) {
|
||||
super(placeController);
|
||||
protected MobilePlacesNavigator(PlaceController placeController, boolean isStandaloneServer) {
|
||||
super(placeController, isStandaloneServer);
|
||||
}
|
||||
|
||||
public PlaceNavigation<StartPlace> getHomeNavigation() {
|
||||
|
||||
+5
-12
@@ -26,7 +26,7 @@ import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.ValueListBox;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace;
|
||||
import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
|
||||
import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator;
|
||||
import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
|
||||
@@ -38,13 +38,11 @@ public class Footer extends Composite {
|
||||
|
||||
private String otherLanguage;
|
||||
private final LocaleInfo currentLocale = LocaleInfo.getCurrentLocale();
|
||||
private MobileApplicationClientFactory appContext;
|
||||
private MobilePlacesNavigator placeNavigator;
|
||||
|
||||
@UiField Anchor changeLanguageLink;
|
||||
@UiField DivElement languageSelectionDiv;
|
||||
@UiField AnchorElement desktopUi;
|
||||
|
||||
// private final String desktopBaseUrl;
|
||||
|
||||
@UiField(provided = true) ValueListBox<Pair<String, String>> changeLanguageList = new ValueListBox<Pair<String,String>>(new Renderer<Pair<String, String>>() {
|
||||
@Override
|
||||
@@ -64,8 +62,8 @@ public class Footer extends Composite {
|
||||
}
|
||||
});
|
||||
|
||||
public Footer(final MobileApplicationClientFactory appContext) {
|
||||
this.appContext = appContext;
|
||||
public Footer(MobilePlacesNavigator placeNavigator) {
|
||||
this.placeNavigator = placeNavigator;
|
||||
FooterResources.INSTANCE.css().ensureInjected();
|
||||
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
@@ -81,10 +79,8 @@ public class Footer extends Composite {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
@UiHandler("changeLanguageLink")
|
||||
public void changeLanguage(ClickEvent e) {
|
||||
if(otherLanguage != null) {
|
||||
@@ -104,10 +100,7 @@ public class Footer extends Composite {
|
||||
|
||||
@UiHandler("whatsNewLinkUi")
|
||||
void onWhatsNew(ClickEvent e) {
|
||||
appContext //
|
||||
.getNavigator() //
|
||||
.getWhatsNewNavigation(WhatsNewPlace.WhatsNewNavigationTabs.SailingAnalytics) //
|
||||
.goToPlace();
|
||||
placeNavigator.getWhatsNewNavigation(WhatsNewPlace.WhatsNewNavigationTabs.SailingAnalytics).goToPlace();
|
||||
}
|
||||
|
||||
private void updateUI() {
|
||||
|
||||
+6
-8
@@ -16,7 +16,7 @@ import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.common.client.LinkUtil;
|
||||
import com.sap.sailing.gwt.common.client.i18n.TextMessages;
|
||||
import com.sap.sailing.gwt.home.client.shared.DropdownHandler;
|
||||
import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
|
||||
import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator;
|
||||
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
|
||||
@@ -38,17 +38,15 @@ public class Header extends Composite {
|
||||
|
||||
private static HeaderUiBinder uiBinder = GWT.create(HeaderUiBinder.class);
|
||||
private DropdownHandler dropdownHandler;
|
||||
// private MobileApplicationClientFactory appContext;
|
||||
|
||||
public Header(final MobileApplicationClientFactory appContext) {
|
||||
// this.appContext = appContext;
|
||||
public Header(final MobilePlacesNavigator placeNavigator) {
|
||||
HeaderResources.INSTANCE.css().ensureInjected();
|
||||
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
|
||||
addNavigation(appContext.getNavigator().getHomeNavigation(), StringMessages.INSTANCE.home());
|
||||
addNavigation(appContext.getNavigator().getEventsNavigation(), StringMessages.INSTANCE.events());
|
||||
addNavigation(appContext.getNavigator().getSolutionsNavigation(), TextMessages.INSTANCE.solutions());
|
||||
addNavigation(placeNavigator.getHomeNavigation(), StringMessages.INSTANCE.home());
|
||||
addNavigation(placeNavigator.getEventsNavigation(), StringMessages.INSTANCE.events());
|
||||
addNavigation(placeNavigator.getSolutionsNavigation(), TextMessages.INSTANCE.solutions());
|
||||
|
||||
dropdownHandler = new DropdownHandler(dropdownTriggerUi, dropdownContainerUi);
|
||||
|
||||
@@ -58,7 +56,7 @@ public class Header extends Composite {
|
||||
public void onBrowserEvent(Event event) {
|
||||
if(LinkUtil.handleLinkClick(event)) {
|
||||
event.preventDefault();
|
||||
appContext.getNavigator().getSearchResultNavigation("").goToPlace();
|
||||
placeNavigator.getSearchResultNavigation("").goToPlace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+15
-8
@@ -9,7 +9,9 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
|
||||
import com.google.web.bindery.event.shared.EventBus;
|
||||
import com.sap.sailing.gwt.home.desktop.app.ApplicationTopLevelView;
|
||||
import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator;
|
||||
import com.sap.sailing.gwt.home.mobile.partials.footer.Footer;
|
||||
import com.sap.sailing.gwt.home.mobile.partials.header.Header;
|
||||
import com.sap.sailing.gwt.home.shared.app.HasLocationTitle;
|
||||
@@ -21,7 +23,7 @@ import com.sap.sse.gwt.client.ErrorReporter;
|
||||
* This is the top-level view of the application. Every time another presenter wants to reveal itself,
|
||||
* {@link MainView} will add its content of the target inside the {@code mainContantPanel}.
|
||||
*/
|
||||
public class MainView extends Composite {
|
||||
public class MainView extends Composite implements ApplicationTopLevelView {
|
||||
interface MyBinder extends UiBinder<Widget, MainView> {
|
||||
}
|
||||
|
||||
@@ -38,11 +40,11 @@ public class MainView extends Composite {
|
||||
@UiField
|
||||
SimplePanel mainContentPanel;
|
||||
|
||||
public MainView(MobileApplicationClientFactory clientFactory) {
|
||||
headerPanel = new Header(clientFactory);
|
||||
footerPanel = new Footer(clientFactory);
|
||||
public MainView(MobilePlacesNavigator placeNavigator, EventBus eventBus) {
|
||||
headerPanel = new Header(placeNavigator);
|
||||
footerPanel = new Footer(placeNavigator);
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
clientFactory.getEventBus().addHandler(PlaceChangeEvent.TYPE, new PlaceChangeEvent.Handler() {
|
||||
eventBus.addHandler(PlaceChangeEvent.TYPE, new PlaceChangeEvent.Handler() {
|
||||
@Override
|
||||
public void onPlaceChange(PlaceChangeEvent event) {
|
||||
Place newPlace = event.getNewPlace();
|
||||
@@ -54,12 +56,17 @@ public class MainView extends Composite {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcceptsOneWidget getContent() {
|
||||
return mainContentPanel;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void showLoading(boolean visible) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ErrorReporter getErrorReporter() {
|
||||
return errorReporter;
|
||||
}
|
||||
|
||||
}
|
||||
+11
-10
@@ -1,13 +1,10 @@
|
||||
package com.sap.sailing.gwt.home.mobile.app;
|
||||
package com.sap.sailing.gwt.home.shared.app;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.place.shared.Place;
|
||||
import com.google.gwt.place.shared.PlaceController;
|
||||
import com.google.gwt.user.client.History;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
|
||||
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
|
||||
import com.sap.sailing.gwt.home.shared.app.PlaceNavigator;
|
||||
|
||||
public abstract class AbstractPlaceNavigator implements PlaceNavigator {
|
||||
protected final PlaceController placeController;
|
||||
@@ -15,15 +12,17 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator {
|
||||
private final ApplicationHistoryMapper mapper = GWT.create(ApplicationHistoryMapper.class);
|
||||
|
||||
public final static String DEFAULT_SAPSAILING_SERVER = "www.sapsailing.com";
|
||||
public final static String DEFAULT_SAPSAILING_DEV_SERVER = "dev.sapsailing.com";
|
||||
public final static String DEFAULT_SAPSAILING_SERVER_URL = "http://" + DEFAULT_SAPSAILING_SERVER;
|
||||
|
||||
protected AbstractPlaceNavigator(PlaceController placeController) {
|
||||
private boolean isStandaloneServer;
|
||||
|
||||
protected AbstractPlaceNavigator(PlaceController placeController, boolean isStandaloneServer) {
|
||||
this.placeController = placeController;
|
||||
this.isStandaloneServer = isStandaloneServer;
|
||||
}
|
||||
|
||||
public <T extends Place> void goToPlace(PlaceNavigation<T> placeNavigation) {
|
||||
if(placeNavigation.isRemotePlace()) {
|
||||
if (placeNavigation.isRemotePlace()) {
|
||||
String destinationUrl = placeNavigation.getTargetUrl();
|
||||
History.newItem(History.getToken(), false);
|
||||
Window.Location.replace(destinationUrl);
|
||||
@@ -36,20 +35,22 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator {
|
||||
return new PlaceNavigation<T>(null, destinationPlace, false, this, mapper);
|
||||
}
|
||||
|
||||
|
||||
protected <T extends Place> PlaceNavigation<T> createGlobalPlaceNavigation(T destinationPlace) {
|
||||
return new PlaceNavigation<T>(destinationPlace, this, mapper);
|
||||
}
|
||||
|
||||
|
||||
protected <T extends Place> PlaceNavigation<T> createPlaceNavigation(String baseUrl, boolean isOnRemoteServer,
|
||||
T destinationPlace) {
|
||||
return new PlaceNavigation<T>(baseUrl, destinationPlace, isOnRemoteServer, this, mapper);
|
||||
}
|
||||
|
||||
|
||||
public <T extends Place> void pushPlaceToHistoryStack(T destinationPlace) {
|
||||
String placeHistoryToken = mapper.getToken(destinationPlace);
|
||||
History.newItem(placeHistoryToken, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStandaloneServer() {
|
||||
return isStandaloneServer;
|
||||
}
|
||||
}
|
||||
+4
-7
@@ -9,8 +9,6 @@ import com.google.gwt.user.client.Event;
|
||||
import com.google.gwt.user.client.EventListener;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.sap.sailing.gwt.common.client.LinkUtil;
|
||||
import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
|
||||
import com.sap.sailing.gwt.home.mobile.app.AbstractPlaceNavigator;
|
||||
|
||||
public class PlaceNavigation<T extends Place> {
|
||||
private final PlaceNavigator placeNavigator;
|
||||
@@ -25,7 +23,7 @@ public class PlaceNavigation<T extends Place> {
|
||||
this.destinationPlace = destinationPlace;
|
||||
this.mapper = mapper;
|
||||
String locationURL = getLocationURL();
|
||||
this.isDestinationOnRemoteServer = !(isLocationOnLocalhostOrDevServer(locationURL) || isLocationOnDefaultSapSailingServer(locationURL));
|
||||
this.isDestinationOnRemoteServer = !(placeNavigator.isStandaloneServer() || isLocationOnLocalhost(locationURL) || isLocationOnDefaultSapSailingServer(locationURL));
|
||||
this.baseUrl = isDestinationOnRemoteServer ? AbstractPlaceNavigator.DEFAULT_SAPSAILING_SERVER_URL : locationURL;
|
||||
}
|
||||
|
||||
@@ -78,12 +76,11 @@ public class PlaceNavigation<T extends Place> {
|
||||
}
|
||||
|
||||
private boolean isLocationOnDefaultSapSailingServer(String urlToCheck) {
|
||||
return urlToCheck.contains(DesktopPlacesNavigator.DEFAULT_SAPSAILING_SERVER);
|
||||
return urlToCheck.contains(AbstractPlaceNavigator.DEFAULT_SAPSAILING_SERVER);
|
||||
}
|
||||
|
||||
private boolean isLocationOnLocalhostOrDevServer(String urlToCheck) {
|
||||
return urlToCheck.contains("localhost") || urlToCheck.contains("127.0.0.1")
|
||||
|| urlToCheck.contains(DesktopPlacesNavigator.DEFAULT_SAPSAILING_DEV_SERVER);
|
||||
private boolean isLocationOnLocalhost(String urlToCheck) {
|
||||
return urlToCheck.contains("localhost") || urlToCheck.contains("127.0.0.1");
|
||||
}
|
||||
|
||||
private String getLocationURL() {
|
||||
|
||||
+2
@@ -5,4 +5,6 @@ import com.google.gwt.place.shared.Place;
|
||||
|
||||
public interface PlaceNavigator {
|
||||
<T extends Place> void goToPlace(PlaceNavigation<T> placeNavigation);
|
||||
|
||||
boolean isStandaloneServer();
|
||||
}
|
||||
+1
-1
@@ -66,7 +66,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
protected RacingEventService getService() {
|
||||
return racingEventServiceTracker.getService();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public StartViewDTO getStartView() throws MalformedURLException {
|
||||
EventStageCandidateCalculator stageCandidateCalculator = new EventStageCandidateCalculator();
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package com.sap.sailing.gwt.server;
|
||||
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.util.tracker.ServiceTracker;
|
||||
|
||||
import com.sap.sailing.gwt.ui.client.ServerConfigurationService;
|
||||
import com.sap.sailing.gwt.ui.server.Activator;
|
||||
import com.sap.sailing.gwt.ui.server.ProxiedRemoteServiceServlet;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sse.util.ServiceTrackerFactory;
|
||||
|
||||
/**
|
||||
* The server side implementation of the RPC service.
|
||||
*/
|
||||
public class ServerConfigurationServiceImpl extends ProxiedRemoteServiceServlet implements ServerConfigurationService {
|
||||
private static final long serialVersionUID = 2571063542941630865L;
|
||||
|
||||
private final ServiceTracker<RacingEventService, RacingEventService> racingEventServiceTracker;
|
||||
|
||||
public ServerConfigurationServiceImpl() {
|
||||
BundleContext context = Activator.getDefault();
|
||||
|
||||
racingEventServiceTracker = ServiceTrackerFactory.createAndOpen(context, RacingEventService.class);
|
||||
}
|
||||
|
||||
protected RacingEventService getService() {
|
||||
return racingEventServiceTracker.getService();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStandaloneServer() {
|
||||
return getService().getSailingServerConfiguration().isStandaloneServer();
|
||||
}
|
||||
}
|
||||
+7
-3
@@ -217,9 +217,13 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements
|
||||
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<MasterDataImportPanel>(masterDataImportPanel),
|
||||
getStringMessages().masterDataImportPanel(), Permission.MANAGE_MASTERDATA_IMPORT);
|
||||
|
||||
RemoteSailingServerInstancesManagementPanel sailingServerInstancesManagementPanel = new RemoteSailingServerInstancesManagementPanel(sailingService, this, getStringMessages());
|
||||
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<RemoteSailingServerInstancesManagementPanel>(sailingServerInstancesManagementPanel),
|
||||
getStringMessages().serverInstances(), Permission.MANAGE_SAILING_SERVER_INSTANCES);
|
||||
RemoteServerInstancesManagementPanel remoteServerInstancesManagementPanel = new RemoteServerInstancesManagementPanel(sailingService, this, getStringMessages());
|
||||
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<RemoteServerInstancesManagementPanel>(remoteServerInstancesManagementPanel),
|
||||
getStringMessages().remoteServerInstances(), Permission.MANAGE_SAILING_SERVER_INSTANCES);
|
||||
|
||||
LocalServerManagementPanel localServerInstancesManagementPanel = new LocalServerManagementPanel(sailingService, this, getStringMessages());
|
||||
panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel<LocalServerManagementPanel>(localServerInstancesManagementPanel),
|
||||
getStringMessages().localServer(), Permission.MANAGE_LOCAL_SERVER_INSTANCE);
|
||||
|
||||
final UserManagementPanel userManagementPanel = new UserManagementPanel(getUserService(), StringMessages.INSTANCE,
|
||||
SailingPermissionsForRoleProvider.INSTANCE);
|
||||
|
||||
+138
@@ -0,0 +1,138 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import com.google.gwt.event.logical.shared.ValueChangeEvent;
|
||||
import com.google.gwt.event.logical.shared.ValueChangeHandler;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.CaptionPanel;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.ServerConfigurationDTO;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.ServerInfoDTO;
|
||||
|
||||
public class LocalServerManagementPanel extends SimplePanel {
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final ErrorReporter errorReporter;
|
||||
private final StringMessages stringMessages;
|
||||
|
||||
private final CaptionPanel serverInfoPanel;
|
||||
private final CaptionPanel serverConfigurationPanel;
|
||||
private CheckBox isStandaloneServerCheckbox;
|
||||
private Label serverNameLabel;
|
||||
private Label buildVersionLabel;
|
||||
|
||||
public LocalServerManagementPanel(SailingServiceAsync sailingService, ErrorReporter errorReporter,
|
||||
StringMessages stringMessages) {
|
||||
this.sailingService = sailingService;
|
||||
this.errorReporter = errorReporter;
|
||||
this.stringMessages = stringMessages;
|
||||
|
||||
VerticalPanel mainPanel = new VerticalPanel();
|
||||
setWidget(mainPanel);
|
||||
mainPanel.setWidth("100%");
|
||||
|
||||
serverInfoPanel = new CaptionPanel("Server Information");
|
||||
mainPanel.add(serverInfoPanel);
|
||||
|
||||
serverConfigurationPanel = new CaptionPanel("Server Configuration");
|
||||
mainPanel.add(serverConfigurationPanel);
|
||||
|
||||
createServerInfoUI();
|
||||
createServerConfigurationUI();
|
||||
}
|
||||
|
||||
private void createServerInfoUI() {
|
||||
VerticalPanel serverInfoContentPanel = new VerticalPanel();
|
||||
serverInfoPanel.setContentWidget(serverInfoContentPanel);
|
||||
|
||||
serverNameLabel = new Label();
|
||||
buildVersionLabel = new Label();
|
||||
|
||||
Grid grid = new Grid(2, 2);
|
||||
grid.setWidget(0, 0, new Label(stringMessages.name() + ":"));
|
||||
grid.setWidget(0, 1, serverNameLabel);
|
||||
grid.setWidget(1, 0, new Label("Build version:"));
|
||||
grid.setWidget(1, 1, buildVersionLabel);
|
||||
serverInfoContentPanel.add(grid);
|
||||
|
||||
refreshServerInfo();
|
||||
}
|
||||
|
||||
private void createServerConfigurationUI() {
|
||||
VerticalPanel serverConfigurationContentPanel = new VerticalPanel();
|
||||
serverConfigurationPanel.setContentWidget(serverConfigurationContentPanel);
|
||||
|
||||
isStandaloneServerCheckbox = new CheckBox();
|
||||
isStandaloneServerCheckbox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
||||
@Override
|
||||
public void onValueChange(ValueChangeEvent<Boolean> event) {
|
||||
serverConfigurationChanged();
|
||||
}
|
||||
});
|
||||
|
||||
Grid grid = new Grid(2, 2);
|
||||
grid.setWidget(0, 0, new Label("Standalone server:"));
|
||||
grid.setWidget(0, 1, isStandaloneServerCheckbox);
|
||||
serverConfigurationContentPanel.add(grid);
|
||||
|
||||
refreshServerConfiguration();
|
||||
}
|
||||
|
||||
private void serverConfigurationChanged() {
|
||||
ServerConfigurationDTO serverConfig = new ServerConfigurationDTO(isStandaloneServerCheckbox.getValue());
|
||||
|
||||
sailingService.updateServerConfiguration(serverConfig, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
refreshServerConfiguration();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void refreshServerInfo() {
|
||||
sailingService.getServerInfo(new AsyncCallback<ServerInfoDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(ServerInfoDTO result) {
|
||||
updateServerInfo(result);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void refreshServerConfiguration() {
|
||||
sailingService.getServerConfiguration(new AsyncCallback<ServerConfigurationDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(ServerConfigurationDTO result) {
|
||||
updateServerConfiguration(result);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void updateServerInfo(ServerInfoDTO result) {
|
||||
serverNameLabel.setText(result.getServerName());
|
||||
buildVersionLabel.setText(result.getBuildVersion() != null ? result.getBuildVersion() : "Unknown");
|
||||
}
|
||||
|
||||
private void updateServerConfiguration(ServerConfigurationDTO result) {
|
||||
isStandaloneServerCheckbox.setValue(result.isStandaloneServer(), true);
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -34,7 +34,7 @@ import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
|
||||
|
||||
public class RemoteSailingServerInstancesManagementPanel extends SimplePanel {
|
||||
public class RemoteServerInstancesManagementPanel extends SimplePanel {
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final ErrorReporter errorReporter;
|
||||
private final StringMessages stringMessages;
|
||||
@@ -45,7 +45,7 @@ public class RemoteSailingServerInstancesManagementPanel extends SimplePanel {
|
||||
|
||||
private final CaptionPanel remoteServersPanel;
|
||||
|
||||
public RemoteSailingServerInstancesManagementPanel(SailingServiceAsync sailingService, ErrorReporter errorReporter,
|
||||
public RemoteServerInstancesManagementPanel(SailingServiceAsync sailingService, ErrorReporter errorReporter,
|
||||
StringMessages stringMessages) {
|
||||
this.sailingService = sailingService;
|
||||
this.errorReporter = errorReporter;
|
||||
@@ -146,7 +146,7 @@ public class RemoteSailingServerInstancesManagementPanel extends SimplePanel {
|
||||
builder.appendHtmlConstant("<br>");
|
||||
}
|
||||
} else {
|
||||
builder.appendEscaped(RemoteSailingServerInstancesManagementPanel.this.stringMessages
|
||||
builder.appendEscaped(RemoteServerInstancesManagementPanel.this.stringMessages
|
||||
.errorAddingSailingServer(server.getLastErrorMessage()));
|
||||
}
|
||||
return builder.toSafeHtml();
|
||||
+2
@@ -20,6 +20,8 @@ public interface RemoteServiceMappingConstants {
|
||||
|
||||
public static final String sailingServiceRemotePath = "service/sailing";
|
||||
|
||||
public static final String serverConfigurationServiceRemotePath = "service/serverconfiguration";
|
||||
|
||||
public static final String homeServiceRemotePath = "service/home";
|
||||
|
||||
public static final String simulatorServiceRemotePath = "service/simulator";
|
||||
|
||||
+8
-2
@@ -76,6 +76,7 @@ import com.sap.sailing.gwt.ui.shared.RegattaScoreCorrectionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RemoteSailingServerReferenceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ReplicationStateDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ScoreCorrectionProviderDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ServerConfigurationDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SimulatorResultsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SwissTimingArchiveConfigurationDTO;
|
||||
@@ -95,6 +96,7 @@ import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.mail.MailException;
|
||||
import com.sap.sse.common.search.KeywordQuery;
|
||||
import com.sap.sse.gwt.client.ServerInfoDTO;
|
||||
import com.sap.sse.gwt.client.filestorage.FileStorageManagementGwtService;
|
||||
import com.sap.sse.gwt.client.media.ImageDTO;
|
||||
import com.sap.sse.gwt.client.media.VideoDTO;
|
||||
@@ -322,6 +324,12 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
|
||||
|
||||
WindInfoForRaceDTO getWindSourcesInfo(RegattaAndRaceIdentifier raceIdentifier);
|
||||
|
||||
ServerInfoDTO getServerInfo();
|
||||
|
||||
ServerConfigurationDTO getServerConfiguration();
|
||||
|
||||
void updateServerConfiguration(ServerConfigurationDTO serverConfiguration);
|
||||
|
||||
List<RemoteSailingServerReferenceDTO> getRemoteSailingServerReferences();
|
||||
|
||||
void removeSailingServers(Set<String> toRemove) throws Exception;
|
||||
@@ -393,8 +401,6 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
|
||||
boolean showOnlyCurrentlyRunningRaces, boolean showOnlyRacesOfSameDay, List<String> visibleRegattas)
|
||||
throws Exception;
|
||||
|
||||
String getBuildVersion();
|
||||
|
||||
void stopReplicatingFromMaster();
|
||||
|
||||
void stopAllReplicas();
|
||||
|
||||
+7
-4
@@ -66,6 +66,7 @@ import com.sap.sailing.gwt.ui.shared.RegattaScoreCorrectionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RemoteSailingServerReferenceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ReplicationStateDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ScoreCorrectionProviderDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ServerConfigurationDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SimulatorResultsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SwissTimingArchiveConfigurationDTO;
|
||||
@@ -83,7 +84,7 @@ import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.search.KeywordQuery;
|
||||
import com.sap.sse.gwt.client.BuildVersionRetriever;
|
||||
import com.sap.sse.gwt.client.ServerInfoRetriever;
|
||||
import com.sap.sse.gwt.client.filestorage.FileStorageManagementGwtServiceAsync;
|
||||
import com.sap.sse.gwt.client.media.ImageDTO;
|
||||
import com.sap.sse.gwt.client.media.VideoDTO;
|
||||
@@ -91,7 +92,7 @@ import com.sap.sse.gwt.client.media.VideoDTO;
|
||||
/**
|
||||
* The async counterpart of {@link SailingService}
|
||||
*/
|
||||
public interface SailingServiceAsync extends BuildVersionRetriever, FileStorageManagementGwtServiceAsync {
|
||||
public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageManagementGwtServiceAsync {
|
||||
|
||||
void getRegattas(AsyncCallback<List<RegattaDTO>> callback);
|
||||
|
||||
@@ -424,6 +425,10 @@ public interface SailingServiceAsync extends BuildVersionRetriever, FileStorageM
|
||||
|
||||
void updateRaceCourse(RegattaAndRaceIdentifier raceIdentifier, List<Util.Pair<ControlPointDTO, PassingInstruction>> controlPoints, AsyncCallback<Void> callback);
|
||||
|
||||
void getServerConfiguration(AsyncCallback<ServerConfigurationDTO> callback);
|
||||
|
||||
void updateServerConfiguration(ServerConfigurationDTO serverConfiguration, AsyncCallback<Void> callback);
|
||||
|
||||
void getRemoteSailingServerReferences(AsyncCallback<List<RemoteSailingServerReferenceDTO>> callback);
|
||||
|
||||
void removeSailingServers(Set<String> toRemove, AsyncCallback<Void> callback);
|
||||
@@ -491,8 +496,6 @@ public interface SailingServiceAsync extends BuildVersionRetriever, FileStorageM
|
||||
|
||||
void checkLeaderboardName(String leaderboardName, AsyncCallback<Util.Pair<String, LeaderboardType>> callback);
|
||||
|
||||
void getBuildVersion(AsyncCallback<String> callback);
|
||||
|
||||
void stopReplicatingFromMaster(AsyncCallback<Void> asyncCallback);
|
||||
|
||||
void getRegattaStructureForEvent(UUID eventId, AsyncCallback<List<RaceGroupDTO>> asyncCallback);
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import com.google.gwt.user.client.rpc.RemoteService;
|
||||
|
||||
public interface ServerConfigurationService extends RemoteService {
|
||||
boolean isStandaloneServer();
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
|
||||
/**
|
||||
* The async counterpart of {@link ServerConfigurationService}
|
||||
*/
|
||||
public interface ServerConfigurationServiceAsync {
|
||||
void isStandaloneServer(AsyncCallback<Boolean> callback);
|
||||
}
|
||||
+2
-1
@@ -383,7 +383,8 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c
|
||||
String pleaseEnterNonEmptyUrl();
|
||||
String addResultImportUrl();
|
||||
String errorAddingResultImportUrl(String message);
|
||||
String serverInstances();
|
||||
String remoteServerInstances();
|
||||
String localServer();
|
||||
String errorRefreshingSailingServers(String message);
|
||||
String successfullyUpdatedSailingServers();
|
||||
String errorRemovingSailingServers(String message);
|
||||
|
||||
+2
-1
@@ -393,7 +393,8 @@ errorRemovingResultImportUrls=Error removing result import URLs: {0}
|
||||
pleaseEnterNonEmptyUrl=Please enter a URL.
|
||||
addResultImportUrl=Add result import URL
|
||||
errorAddingResultImportUrl=Error adding result import URL: {0}
|
||||
serverInstances=Server Instances
|
||||
remoteServerInstances=Remote Server Instances
|
||||
localServer=Local Server
|
||||
errorRefreshingSailingServers=Error refreshing SailingServer instances: {0}
|
||||
successfullyUpdatedSailingServers=Successfully updated SailingServer instances
|
||||
errorRemovingSailingServers=Error removing SailingServer instances: {0}
|
||||
|
||||
+2
-1
@@ -394,7 +394,8 @@ errorRemovingResultImportUrls=Fehler beim Löschen von Ergebnisimport URLs: {0}
|
||||
pleaseEnterNonEmptyUrl=Bitte gebe eine URL ein.
|
||||
addResultImportUrl=Ergebnisimport-URL hinzufügen
|
||||
errorAddingResultImportUrl=Fehler beim Hinzufügen einer Ergebnisimport URL: {0}
|
||||
serverInstances=Server Instanzen
|
||||
remoteServerInstances=Remote-Server Instanzen
|
||||
localServer=Lokaler Server
|
||||
errorRefreshingSailingServers=Fehler beim Aktualisieren der SailingServer Instanzen: {0}
|
||||
successfullyUpdatedSailingServers=SailingServer Instanzen erfolgreich aktualisiert
|
||||
errorRemovingSailingServers=Fehler beim Löschen von SailingServer Instanzen: {0}
|
||||
|
||||
+2
-1
@@ -963,7 +963,8 @@ showDiagram=Show Diagram
|
||||
rerunQueryAfterRefreshTooltip=Повторно запускает запрос после обновления таблиц.
|
||||
queryDefinitionProvider=Поставщик определения запроса
|
||||
statisticProvider=Поставщик статистических данных
|
||||
serverInstances=Server Instances
|
||||
remoteServerInstances=Remote Server Instances
|
||||
localServer=Local Server
|
||||
calculateThe=Calculate the
|
||||
groupingProvider=Поставщик группировки
|
||||
releaseNotes=Новости и история выпусков
|
||||
|
||||
+2
-1
@@ -112,7 +112,8 @@ leg=L
|
||||
settingsForComponent=Settings for {0}
|
||||
classFlag=Class flag
|
||||
statisticProvider=Statistic Provider
|
||||
serverInstances=Server Instances
|
||||
remoteServerInstances=Remote Server Instances
|
||||
localServer=Local Server
|
||||
startRaceLogTracking=Start RaceLog Tracking
|
||||
lastScoreCorrectionsComment=Last score correction comment
|
||||
masterDataImportPanel=Master Data Import
|
||||
|
||||
+25
-6
@@ -111,6 +111,7 @@ import com.sap.sailing.domain.base.RaceColumnInSeries;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RemoteSailingServerReference;
|
||||
import com.sap.sailing.domain.base.SailingServerConfiguration;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.Sideline;
|
||||
import com.sap.sailing.domain.base.SpeedWithBearingWithConfidence;
|
||||
@@ -136,6 +137,7 @@ import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.base.impl.FleetImpl;
|
||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.base.impl.SailingServerConfigurationImpl;
|
||||
import com.sap.sailing.domain.base.impl.SeriesImpl;
|
||||
import com.sap.sailing.domain.base.impl.TeamImpl;
|
||||
import com.sap.sailing.domain.common.Bearing;
|
||||
@@ -333,6 +335,7 @@ import com.sap.sailing.gwt.ui.shared.ReplicationMasterDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ReplicationStateDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ScoreCorrectionProviderDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ServerConfigurationDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SidelineDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SimulatorResultsDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SimulatorWindDTO;
|
||||
@@ -407,6 +410,7 @@ import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardScoreCo
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardScoreCorrectionMetadata;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateRaceDelayToLive;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateSeries;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateServerConfiguration;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateSpecificRegatta;
|
||||
import com.sap.sailing.server.simulation.SimulationService;
|
||||
import com.sap.sailing.simulator.Path;
|
||||
@@ -420,7 +424,7 @@ import com.sap.sailing.xrr.schema.RegattaResults;
|
||||
import com.sap.sailing.xrr.structureimport.SeriesParameters;
|
||||
import com.sap.sailing.xrr.structureimport.StructureImporter;
|
||||
import com.sap.sailing.xrr.structureimport.buildstructure.SetRacenumberFromSeries;
|
||||
import com.sap.sse.BuildVersion;
|
||||
import com.sap.sse.ServerInfo;
|
||||
import com.sap.sse.common.CountryCode;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.NoCorrespondingServiceRegisteredException;
|
||||
@@ -444,6 +448,7 @@ import com.sap.sse.common.search.KeywordQuery;
|
||||
import com.sap.sse.common.search.Result;
|
||||
import com.sap.sse.filestorage.FileStorageService;
|
||||
import com.sap.sse.filestorage.InvalidPropertiesException;
|
||||
import com.sap.sse.gwt.client.ServerInfoDTO;
|
||||
import com.sap.sse.gwt.client.media.ImageDTO;
|
||||
import com.sap.sse.gwt.client.media.VideoDTO;
|
||||
import com.sap.sse.gwt.server.filestorage.FileStorageServiceDTOUtils;
|
||||
@@ -3816,6 +3821,25 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServerInfoDTO getServerInfo() {
|
||||
ServerInfoDTO result = new ServerInfoDTO(ServerInfo.getName(), ServerInfo.getBuildVersion());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServerConfigurationDTO getServerConfiguration() {
|
||||
SailingServerConfiguration sailingServerConfiguration = getService().getSailingServerConfiguration();
|
||||
ServerConfigurationDTO result = new ServerConfigurationDTO(sailingServerConfiguration.isStandaloneServer());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateServerConfiguration(ServerConfigurationDTO serverConfiguration) {
|
||||
SailingServerConfiguration newServerConfiguration = new SailingServerConfigurationImpl(serverConfiguration.isStandaloneServer());
|
||||
getService().apply(new UpdateServerConfiguration(newServerConfiguration));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RemoteSailingServerReferenceDTO> getRemoteSailingServerReferences() {
|
||||
List<RemoteSailingServerReferenceDTO> result = new ArrayList<RemoteSailingServerReferenceDTO>();
|
||||
@@ -4233,11 +4257,6 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBuildVersion() {
|
||||
return BuildVersion.getBuildVersion();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopReplicatingFromMaster() {
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.sap.sailing.gwt.ui.shared;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
|
||||
public class ServerConfigurationDTO implements IsSerializable {
|
||||
private boolean isStandaloneServer;
|
||||
|
||||
// for GWT
|
||||
ServerConfigurationDTO() {
|
||||
}
|
||||
|
||||
public ServerConfigurationDTO(boolean isStandaloneServer) {
|
||||
this.isStandaloneServer = isStandaloneServer;
|
||||
}
|
||||
|
||||
public boolean isStandaloneServer() {
|
||||
return isStandaloneServer;
|
||||
}
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
package com.sap.sailing.mongodb.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.mongodb.MongoException;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.SailingServerConfiguration;
|
||||
import com.sap.sailing.domain.base.impl.SailingServerConfigurationImpl;
|
||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.PersistenceFactory;
|
||||
|
||||
public class TestStoringAndLoadingServerConfiguration extends AbstractMongoDBTest {
|
||||
public TestStoringAndLoadingServerConfiguration() throws UnknownHostException, MongoException {
|
||||
super();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLoadStoreServerConfigurationFirstTime() {
|
||||
boolean defaultValueOfIsStandaloneServer = false;
|
||||
|
||||
// if we have never stored a server configuration before a default configuration should be created
|
||||
DomainObjectFactory dof = PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), DomainFactory.INSTANCE);
|
||||
SailingServerConfiguration loadedServerConfiguration = dof.loadServerConfiguration();
|
||||
assertNotNull(loadedServerConfiguration);
|
||||
assertEquals(defaultValueOfIsStandaloneServer, loadedServerConfiguration.isStandaloneServer());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLoadStoreServerConfiguration() {
|
||||
boolean isStandaloneServer = false;
|
||||
MongoObjectFactory mof = PersistenceFactory.INSTANCE.getMongoObjectFactory(getMongoService());
|
||||
|
||||
SailingServerConfiguration serverConfiguration = new SailingServerConfigurationImpl(isStandaloneServer);
|
||||
mof.storeServerConfiguration(serverConfiguration);
|
||||
|
||||
DomainObjectFactory dof = PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), DomainFactory.INSTANCE);
|
||||
SailingServerConfiguration loadedServerConfiguration = dof.loadServerConfiguration();
|
||||
assertNotNull(loadedServerConfiguration);
|
||||
assertEquals(isStandaloneServer, loadedServerConfiguration.isStandaloneServer());
|
||||
|
||||
isStandaloneServer = true;
|
||||
serverConfiguration.setStandaloneServer(isStandaloneServer);
|
||||
mof.storeServerConfiguration(serverConfiguration);
|
||||
loadedServerConfiguration = dof.loadServerConfiguration();
|
||||
assertNotNull(loadedServerConfiguration);
|
||||
assertEquals(isStandaloneServer, loadedServerConfiguration.isStandaloneServer());
|
||||
}
|
||||
}
|
||||
@@ -32,6 +32,7 @@ import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RegattaRegistry;
|
||||
import com.sap.sailing.domain.base.RemoteSailingServerReference;
|
||||
import com.sap.sailing.domain.base.SailingServerConfiguration;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier;
|
||||
@@ -584,6 +585,13 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
*/
|
||||
Result<LeaderboardSearchResultBase> searchRemotely(String remoteServerReferenceName, KeywordQuery query);
|
||||
|
||||
/**
|
||||
* Gets the configuration of the local sailing server instances.
|
||||
*/
|
||||
SailingServerConfiguration getSailingServerConfiguration();
|
||||
|
||||
void updateServerConfiguration(SailingServerConfiguration serverConfiguration);
|
||||
|
||||
/**
|
||||
* References to remote servers may be dead or alive. This is internally determined by regularly polling those
|
||||
* servers for their events list. If the events list cannot be successfully retrieved, the server is considered "dead."
|
||||
|
||||
+17
-2
@@ -77,6 +77,7 @@ import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RegattaListener;
|
||||
import com.sap.sailing.domain.base.RemoteSailingServerReference;
|
||||
import com.sap.sailing.domain.base.SailingServerConfiguration;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.Sideline;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
@@ -209,7 +210,7 @@ import com.sap.sailing.server.operationaltransformation.UpdateWindAveragingTime;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateWindSourcesToExclude;
|
||||
import com.sap.sailing.server.simulation.SimulationService;
|
||||
import com.sap.sailing.server.simulation.SimulationServiceFactory;
|
||||
import com.sap.sse.BuildVersion;
|
||||
import com.sap.sse.ServerInfo;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.TypeBasedServiceFinderFactory;
|
||||
import com.sap.sse.common.Util;
|
||||
@@ -398,6 +399,8 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
|
||||
private final JoinedClassLoader joinedClassLoader;
|
||||
|
||||
private SailingServerConfiguration sailingServerConfiguration;
|
||||
|
||||
/**
|
||||
* Providing the constructor parameters for a new {@link RacingEventServiceImpl} instance is a bit tricky
|
||||
* in some cases because containment and initialization order of some types is fairly tightly coupled.
|
||||
@@ -593,6 +596,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
this.configurationMap = new DeviceConfigurationMapImpl();
|
||||
this.serviceFinderFactory = serviceFinderFactory;
|
||||
|
||||
sailingServerConfiguration = domainObjectFactory.loadServerConfiguration();
|
||||
final Iterable<Pair<Event, Boolean>> loadedEventsWithRequireStoreFlag = loadStoredEvents();
|
||||
loadStoredRegattas();
|
||||
loadRaceIDToRegattaAssociations();
|
||||
@@ -1135,6 +1139,17 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
return Collections.unmodifiableMap(new HashMap<String, Leaderboard>(leaderboardsByName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SailingServerConfiguration getSailingServerConfiguration() {
|
||||
return sailingServerConfiguration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateServerConfiguration(SailingServerConfiguration serverConfiguration) {
|
||||
this.sailingServerConfiguration = serverConfiguration;
|
||||
mongoObjectFactory.storeServerConfiguration(serverConfiguration);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<RemoteSailingServerReference, com.sap.sse.common.Util.Pair<Iterable<EventBase>, Exception>> getPublicEventsOfAllSailingServers() {
|
||||
return remoteSailingServerSet.getCachedEventsForRemoteSailingServers(); // FIXME should probably add our own
|
||||
@@ -2911,7 +2926,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "RacingEventService: " + this.hashCode() + " Build: " + BuildVersion.getBuildVersion();
|
||||
return "RacingEventService: " + this.hashCode() + " Build: " + ServerInfo.getBuildVersion();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import com.sap.sailing.domain.base.SailingServerConfiguration;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
|
||||
public class UpdateServerConfiguration extends AbstractRacingEventServiceOperation<Void> {
|
||||
private static final long serialVersionUID = -778186188996039972L;
|
||||
private final SailingServerConfiguration serverConfiguration;
|
||||
|
||||
public UpdateServerConfiguration(SailingServerConfiguration serverConfiguration) {
|
||||
super();
|
||||
this.serverConfiguration = serverConfiguration;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link #internalApplyTo(RacingEventService)} already replicates the effects
|
||||
*/
|
||||
@Override
|
||||
public boolean isRequiresExplicitTransitiveReplication() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void internalApplyTo(RacingEventService toState) throws Exception {
|
||||
toState.updateServerConfiguration(serverConfiguration);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformClientOp(RacingEventServiceOperation<?> serverOp) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformServerOp(RacingEventServiceOperation<?> clientOp) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -20,7 +20,7 @@ import com.google.gwt.user.client.ui.TabLayoutPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sse.common.Util.Triple;
|
||||
import com.sap.sse.gwt.client.AbstractEntryPoint;
|
||||
import com.sap.sse.gwt.client.BuildVersionRetriever;
|
||||
import com.sap.sse.gwt.client.ServerInfoRetriever;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.panels.VerticalTabLayoutPanel;
|
||||
import com.sap.sse.security.shared.Permission;
|
||||
@@ -149,7 +149,7 @@ public class AdminConsolePanel extends DockLayoutPanel {
|
||||
}
|
||||
|
||||
public AdminConsolePanel(UserService userService, PermissionsForRoleProvider permissionsForRoleProvider,
|
||||
BuildVersionRetriever buildVersionRetriever, String releaseNotesAnchorLabel,
|
||||
ServerInfoRetriever buildVersionRetriever, String releaseNotesAnchorLabel,
|
||||
String releaseNotesURL, ErrorReporter errorReporter, LoginPanelCss loginPanelCss) {
|
||||
super(Unit.EM);
|
||||
this.permissionsForRoleProvider = permissionsForRoleProvider;
|
||||
|
||||
+6
-5
@@ -5,21 +5,22 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sse.gwt.client.BuildVersionRetriever;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.ServerInfoDTO;
|
||||
import com.sap.sse.gwt.client.ServerInfoRetriever;
|
||||
|
||||
public class SystemInformationPanel extends FlowPanel {
|
||||
|
||||
private final Label buildVersionText;
|
||||
|
||||
public SystemInformationPanel(final BuildVersionRetriever buildVersionRetriever, final ErrorReporter errorReporter) {
|
||||
public SystemInformationPanel(final ServerInfoRetriever buildVersionRetriever, final ErrorReporter errorReporter) {
|
||||
super();
|
||||
buildVersionText = new Label("");
|
||||
addFloatingWidget(buildVersionText);
|
||||
buildVersionRetriever.getBuildVersion(new AsyncCallback<String>() {
|
||||
buildVersionRetriever.getServerInfo(new AsyncCallback<ServerInfoDTO>() {
|
||||
@Override
|
||||
public void onSuccess(String result) {
|
||||
buildVersionText.setText("Version: " + result);
|
||||
public void onSuccess(ServerInfoDTO result) {
|
||||
buildVersionText.setText("Version: " + result.getBuildVersion());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
package com.sap.sse.gwt.client;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
|
||||
public interface BuildVersionRetriever {
|
||||
void getBuildVersion(AsyncCallback<String> callback);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.sap.sse.gwt.client;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
|
||||
public class ServerInfoDTO implements IsSerializable {
|
||||
private String serverName;
|
||||
private String buildVersion;
|
||||
|
||||
// for GWT
|
||||
ServerInfoDTO() {
|
||||
}
|
||||
|
||||
public ServerInfoDTO(String serverName, String buildVersion) {
|
||||
this.serverName = serverName;
|
||||
this.buildVersion = buildVersion;
|
||||
}
|
||||
|
||||
public String getBuildVersion() {
|
||||
return buildVersion;
|
||||
}
|
||||
|
||||
public String getServerName() {
|
||||
return serverName;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.sap.sse.gwt.client;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
|
||||
public interface ServerInfoRetriever {
|
||||
void getServerInfo(AsyncCallback<ServerInfoDTO> callback);
|
||||
}
|
||||
+2
-2
@@ -16,7 +16,7 @@ import com.rabbitmq.client.Channel;
|
||||
import com.rabbitmq.client.Connection;
|
||||
import com.rabbitmq.client.ConnectionFactory;
|
||||
import com.rabbitmq.client.QueueingConsumer;
|
||||
import com.sap.sse.BuildVersion;
|
||||
import com.sap.sse.ServerInfo;
|
||||
import com.sap.sse.replication.Replicable;
|
||||
import com.sap.sse.replication.ReplicationMasterDescriptor;
|
||||
|
||||
@@ -79,7 +79,7 @@ public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescrip
|
||||
return new URL("http", getHostname(), servletPort, REPLICATION_SERVLET + "?" + ReplicationServlet.ACTION + "="
|
||||
+ ReplicationServlet.Action.REGISTER.name() + "&" + ReplicationServlet.SERVER_UUID + "="
|
||||
+ uuid.toString() + "&" + ReplicationServlet.ADDITIONAL_INFORMATION + "="
|
||||
+ java.net.URLEncoder.encode(BuildVersion.getBuildVersion(), "UTF-8"));
|
||||
+ java.net.URLEncoder.encode(ServerInfo.getBuildVersion(), "UTF-8"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -32,7 +32,7 @@ import com.rabbitmq.client.AMQP.Queue.DeleteOk;
|
||||
import com.rabbitmq.client.Channel;
|
||||
import com.rabbitmq.client.ConnectionFactory;
|
||||
import com.rabbitmq.client.QueueingConsumer;
|
||||
import com.sap.sse.BuildVersion;
|
||||
import com.sap.sse.ServerInfo;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.replication.OperationExecutionListener;
|
||||
import com.sap.sse.replication.OperationWithResult;
|
||||
@@ -631,7 +631,7 @@ public class ReplicationServiceImpl implements ReplicationService {
|
||||
private String registerReplicaWithMaster(ReplicationMasterDescriptor master) throws IOException,
|
||||
ClassNotFoundException {
|
||||
URL replicationRegistrationRequestURL = master.getReplicationRegistrationRequestURL(getServerIdentifier(),
|
||||
BuildVersion.getBuildVersion());
|
||||
ServerInfo.getBuildVersion());
|
||||
final URLConnection registrationRequestConnection = replicationRegistrationRequestURL.openConnection();
|
||||
registrationRequestConnection.connect();
|
||||
final InputStream content = (InputStream) registrationRequestConnection.getContent();
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
package com.sap.sse;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
|
||||
public class BuildVersion {
|
||||
public static String getBuildVersion() {
|
||||
String version = "Unknown or Development (" + System.getProperty("com.sap.sailing.server.name") + ")";
|
||||
File versionfile = new File(System.getProperty("jetty.home") + File.separator + "version.txt");
|
||||
if (versionfile.exists()) {
|
||||
try {
|
||||
version = new BufferedReader(new FileReader(versionfile)).readLine();
|
||||
} catch (Exception ex) {
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.sap.sse;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
|
||||
/**
|
||||
* A class providing static information about the running server.
|
||||
* @author Frank
|
||||
*
|
||||
*/
|
||||
public class ServerInfo {
|
||||
public static String getBuildVersion() {
|
||||
String version = "Unknown or Development (" + ServerStartupConstants.SERVER_NAME + ")";
|
||||
File versionfile = new File(ServerStartupConstants.JETTY_HOME + File.separator + "version.txt");
|
||||
if (versionfile.exists()) {
|
||||
try {
|
||||
version = new BufferedReader(new FileReader(versionfile)).readLine();
|
||||
} catch (Exception ex) {
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
public static String getName() {
|
||||
return ServerStartupConstants.SERVER_NAME;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.sap.sse;
|
||||
|
||||
public interface ServerStartupConstants {
|
||||
final static String SERVER_NAME = System.getProperty("com.sap.sailing.server.name");
|
||||
final static String JETTY_HOME = System.getProperty("jetty.home");
|
||||
}
|
||||
Reference in new issue
Block a user