From 923d3b520f0af4c7ba55991c562fe2b199a15673 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 28 May 2015 14:47:10 +0200 Subject: [PATCH] The client locale can be obtained through DispatchContext on the server side --- .../shared/dispatch/SimpleDispatch.java | 3 ++- .../ui/server/dispatch/DispatchRPCImpl.java | 2 +- .../ui/shared/dispatch/DispatchContext.java | 9 ++++++++ .../shared/dispatch/DispatchContextImpl.java | 22 +++++++++++++++---- .../ui/shared/dispatch/RequestWrapper.java | 9 +++++++- .../event/GetEventOverviewStageAction.java | 1 + 6 files changed, 39 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/dispatch/SimpleDispatch.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/dispatch/SimpleDispatch.java index 75062a7d3fb..401caa60100 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/dispatch/SimpleDispatch.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/dispatch/SimpleDispatch.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.home.client.shared.dispatch; import java.util.Date; import com.google.gwt.core.client.GWT; +import com.google.gwt.i18n.client.LocaleInfo; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.ServiceDefTarget; import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants; @@ -32,7 +33,7 @@ public class SimpleDispatch implements DispatchAsync { @Override public > void execute(A action, final AsyncCallback callback) { - dispatchRPC.execute(new RequestWrapper(action), new AsyncCallback>() { + dispatchRPC.execute(new RequestWrapper(action, LocaleInfo.getCurrentLocale().getLocaleName()), new AsyncCallback>() { @Override public void onFailure(Throwable caught) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/dispatch/DispatchRPCImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/dispatch/DispatchRPCImpl.java index 97c051d69fa..3514b566ec4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/dispatch/DispatchRPCImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/dispatch/DispatchRPCImpl.java @@ -28,7 +28,7 @@ public class DispatchRPCImpl extends ProxiedRemoteServiceServlet implements Disp @Override public > ResultWrapper execute(RequestWrapper request) throws DispatchException { - R executionResult = request.getAction().execute(new DispatchContextImpl(request.getCurrentClientTime(), racingEventServiceTracker.getService())); + R executionResult = request.getAction().execute(new DispatchContextImpl(request.getCurrentClientTime(), racingEventServiceTracker.getService(), request.getClientLocaleName())); return new ResultWrapper(executionResult); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/DispatchContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/DispatchContext.java index dc49ad5ecfd..8ea041e4819 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/DispatchContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/DispatchContext.java @@ -1,9 +1,18 @@ package com.sap.sailing.gwt.ui.shared.dispatch; +import java.util.Date; +import java.util.Locale; + import com.sap.sailing.server.RacingEventService; public interface DispatchContext { RacingEventService getRacingEventService(); + + String getClientLocaleName(); + + Locale getClientLocale(); + + Date getCurrentClientTime(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/DispatchContextImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/DispatchContextImpl.java index 44071ace6d7..1813050dcaf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/DispatchContextImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/DispatchContextImpl.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.ui.shared.dispatch; import java.util.Date; +import java.util.Locale; import com.sap.sailing.server.RacingEventService; @@ -8,11 +9,13 @@ import com.sap.sailing.server.RacingEventService; public class DispatchContextImpl implements DispatchContext { private final RacingEventService racingEventService; private final Date currentClientTime; - private final Date currentServerTime = new Date(); +// private final Date currentServerTime = new Date(); + private String clientLocaleName; - public DispatchContextImpl(Date currentClientTime, RacingEventService racingEventService) { + public DispatchContextImpl(Date currentClientTime, RacingEventService racingEventService, String clientLocaleName) { this.currentClientTime = currentClientTime; this.racingEventService = racingEventService; + this.clientLocaleName = clientLocaleName; } @Override @@ -20,11 +23,22 @@ public class DispatchContextImpl implements DispatchContext { return racingEventService; } + @Override public Date getCurrentClientTime() { return currentClientTime; } - public Date getCurrentServerTime() { - return currentServerTime; +// public Date getCurrentServerTime() { +// return currentServerTime; +// } + + @Override + public String getClientLocaleName() { + return clientLocaleName; + } + + @Override + public Locale getClientLocale() { + return Locale.forLanguageTag(clientLocaleName); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/RequestWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/RequestWrapper.java index 3cfec4c936f..0a7be0417ff 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/RequestWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/RequestWrapper.java @@ -8,15 +8,18 @@ public class RequestWrapper> implements Is private Date currentClientTime = new Date(); + private String clientLocaleName; + private A action; @SuppressWarnings("unused") private RequestWrapper() { } - public RequestWrapper(A action) { + public RequestWrapper(A action, String clientLocaleName) { super(); this.action = action; + this.clientLocaleName = clientLocaleName; } public A getAction() { @@ -26,4 +29,8 @@ public class RequestWrapper> implements Is public Date getCurrentClientTime() { return currentClientTime; } + + public String getClientLocaleName() { + return clientLocaleName; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java index 1de1703ac92..d1009001f1d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java @@ -52,6 +52,7 @@ public class GetEventOverviewStageAction implements Action videoURLs = event.getVideoURLs(); for (int i = Util.size(videoURLs) - 1; i >= 0; i--) { + // TODO fmittag/pgt: implement locale specific live stream using context.getClientLocaleName() or context.getClientLocale() String videoUrl = Util.get(videoURLs, i).toString(); MimeType type = MediaUtils.detectMimeTypeFromUrl(videoUrl); if (type == MimeType.youtube || type == MimeType.vimeo || type == MimeType.mp4) {