- lot's of small fixes

- new version of place management for remote references
This commit is contained in:
fmittag committed 2014-07-31 16:23:41 +02:00
1 parent 6c4a908d20
commit adef2a6444
18 files changed
+71 -48

No files matched your search

@@ -2,8 +2,8 @@ package com.sap.sailing.gwt.home.client.app;
public interface PlaceNavigator {
void goToHome();
void goToEvent(String eventUuidAsString, String baseUrl);
void goToRegattaOfEvent(String eventUuidAsString, String regattaIdAsNameString, String baseUrl);
void goToEvent(String eventUuidAsString, String baseUrl, boolean isOnRemoteServer);
void goToRegattaOfEvent(String eventUuidAsString, String regattaIdAsNameString, String baseUrl, boolean isOnRemoteServer);
void goToSearchResult(String searchQuery);
void goToEvents();
void goToAboutUs();
@@ -16,7 +16,6 @@ import com.sap.sailing.gwt.home.client.place.start.StartPlace;
public class PlaceNavigatorImpl implements PlaceNavigator {
private final PlaceController placeController;
private final static String SAPSAILING_DOMAIN = "www.sapsailing.com";
private final static String NEW_HOME_TEST_DOMAIN = "newhome.sapsailing.com";
protected PlaceNavigatorImpl(PlaceController placeController) {
super();
@@ -29,15 +28,15 @@ public class PlaceNavigatorImpl implements PlaceNavigator {
}
@Override
public void goToEvent(String eventUuidAsString, String baseUrl) {
public void goToEvent(String eventUuidAsString, String baseUrl, boolean isOnRemoteServer) {
EventPlace eventPlace = new EventPlace(eventUuidAsString, null);
gotoPlace(baseUrl, eventPlace, new EventPlace.Tokenizer());
gotoPlace(baseUrl, isOnRemoteServer, eventPlace, new EventPlace.Tokenizer());
}
@Override
public void goToRegattaOfEvent(String eventUuidAsString, String leaderboardIdAsNameString, String baseUrl) {
public void goToRegattaOfEvent(String eventUuidAsString, String leaderboardIdAsNameString, String baseUrl, boolean isOnRemoteServer) {
EventPlace eventPlace = new EventPlace(eventUuidAsString, leaderboardIdAsNameString);
gotoPlace(baseUrl, eventPlace, new EventPlace.Tokenizer());
gotoPlace(baseUrl, isOnRemoteServer, eventPlace, new EventPlace.Tokenizer());
}
@Override
@@ -73,9 +72,18 @@ public class PlaceNavigatorImpl implements PlaceNavigator {
private <T extends Place> void gotoPlace(T destinationPlace) {
placeController.goTo(destinationPlace);
}
private <T extends Place> void gotoPlace(String baseUrl, T destinationPlace, PlaceTokenizer<T> tokenizer) {
if(isLocationOnLocalhost(baseUrl) || isLocationOnSapSailingCom(baseUrl) || isLocationOnNewHomeTest(baseUrl)) {
if(isLocationOnLocalhost(baseUrl) || isLocationOnSapSailingCom(baseUrl)) {
placeController.goTo(destinationPlace);
} else {
String homeUrl = buildRemotePlaceUrl(baseUrl, destinationPlace, tokenizer);
Window.Location.replace(homeUrl);
}
}
private <T extends Place> void gotoPlace(String baseUrl, boolean isOnRemoteServer, T destinationPlace, PlaceTokenizer<T> tokenizer) {
if(isLocationOnLocalhost(baseUrl) || !isOnRemoteServer) {
placeController.goTo(destinationPlace);
} else {
String homeUrl = buildRemotePlaceUrl(baseUrl, destinationPlace, tokenizer);
@@ -91,10 +99,6 @@ public class PlaceNavigatorImpl implements PlaceNavigator {
return baseUrl + "/gwt/Home.html#" + destinationPlace.getClass().getSimpleName() + ":" + tokenizer.getToken(destinationPlace);
}
private boolean isLocationOnNewHomeTest(String urlToCheck) {
return urlToCheck.contains(NEW_HOME_TEST_DOMAIN);
}
private boolean isLocationOnSapSailingCom(String urlToCheck) {
return urlToCheck.contains(SAPSAILING_DOMAIN);
}
@@ -20,7 +20,8 @@ public interface TextMessages extends Messages {
String officalEventWebsite();
String leg();
String leader();
String winner();
String races();
String showEvent();
String countdownDays();
String countdownHours();
@@ -12,7 +12,8 @@ fullEventSchedule=Full event schedule
officalEventWebsite=Official event website
leg=Leg
leader=Leader
winner=Winner
races=Races
showEvent=ShowEvent
countdownDays=Days
countdownHours=Hrs
@@ -12,7 +12,8 @@ fullEventSchedule=Full event schedule
officalEventWebsite=Official event website
leg=Leg
leader=Leader
winner=Winner
races=Races
showEvent=ShowEvent
countdownDays=Tage
countdownHours=Std.
@@ -29,15 +29,11 @@ public class EventRegattaRaces extends Composite {
@UiField HTMLPanel regattaPhasesPanel;
@UiField HTMLPanel rootPanel;
@SuppressWarnings("unused")
private final EventDTO event;
private final Timer timerForClientServerOffset;
private final EventPageNavigator pageNavigator;
private final List<EventRegattaRacesPhase> phaseElements;
public EventRegattaRaces(EventDTO event, Timer timerForClientServerOffset, EventPageNavigator pageNavigator) {
this.event = event;
this.timerForClientServerOffset = timerForClientServerOffset;
this.pageNavigator = pageNavigator;
@@ -2,13 +2,13 @@ package com.sap.sailing.gwt.home.client.place.event.regattaraces;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.UIObject;
import com.sap.sailing.domain.common.dto.FleetDTO;
public class EventRegattaRacesFleet {
public class EventRegattaRacesFleet extends UIObject {
private static EventRegattaRacesFleetUiBinder uiBinder = GWT.create(EventRegattaRacesFleetUiBinder.class);
interface EventRegattaRacesFleetUiBinder extends UiBinder<DivElement, EventRegattaRacesFleet> {
@@ -16,21 +16,17 @@ public class EventRegattaRacesFleet {
@UiField SpanElement fleetName;
@UiField DivElement fleetCountAndColor;
private DivElement root;
public EventRegattaRacesFleet(FleetDTO fleet) {
public EventRegattaRacesFleet(FleetDTO fleet, int maxNumberOfCompetitorsInFleetRace) {
EventRegattaRacesResources.INSTANCE.css().ensureInjected();
root = uiBinder.createAndBindUi(this);
setElement(uiBinder.createAndBindUi(this));
fleetName.setInnerText(fleet.getName());
if(fleet.getColor() != null) {
fleetCountAndColor.getStyle().setBackgroundColor(fleet.getColor().getAsHtml());
}
fleetCountAndColor.setInnerText("tbd.");
}
public Element getElement() {
return root;
if(maxNumberOfCompetitorsInFleetRace > 0) {
fleetCountAndColor.setInnerText(String.valueOf(maxNumberOfCompetitorsInFleetRace));
}
}
}
@@ -34,7 +34,7 @@ public class EventRegattaRacesFleetGroup extends Composite {
initWidget(uiBinder.createAndBindUi(this));
for(FleetDTO fleet: fleetsToShow) {
EventRegattaRacesFleet eventRegattaRacesFleet = new EventRegattaRacesFleet(fleet);
EventRegattaRacesFleet eventRegattaRacesFleet = new EventRegattaRacesFleet(fleet, 0);
fleetsPanel.appendChild(eventRegattaRacesFleet.getElement());
updateFleetRacesUI(leaderboard, series, fleet, timerForClientServerOffset, pageNavigator);
@@ -11,6 +11,7 @@ import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.UIObject;
import com.sap.sailing.domain.common.LeaderboardNameConstants;
import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.gwt.home.client.i18n.TextMessages;
import com.sap.sailing.gwt.home.client.place.event.EventPageNavigator;
import com.sap.sailing.gwt.ui.shared.RaceGroupSeriesDTO;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
@@ -30,7 +31,7 @@ public class EventRegattaRacesPhase extends UIObject {
setElement(uiBinder.createAndBindUi(this));
if(series.getName().equals(LeaderboardNameConstants.DEFAULT_SERIES_NAME)) {
phaseName.setInnerText("Races");
phaseName.setInnerText(TextMessages.INSTANCE.races());
} else {
phaseName.setInnerText(series.getName());
}
@@ -22,10 +22,10 @@
<span class="{local_res.css.eventregattarace_wind_strength}"><span ui:field="averageRaceWind" /></span>
</div>
<div ui:field="raceWinnerDiv" class="{local_res.css.eventregattarace_details} {local_res.css.eventregattarace_leader}">
<ui:text from='{i18n.eventRegattaRaceWinner}'/><br></br> - &nbsp;<span ui:field="raceWinner" class="{local_res.css.eventregattarace_leader_name}"></span>
<ui:text from="{i18n.eventRegattaRaceWinner}"/>:<br></br> - &nbsp;<span ui:field="raceWinner" class="{local_res.css.eventregattarace_leader_name}"></span>
</div>
<div ui:field="raceLeaderDiv" class="{local_res.css.eventregattarace_details} {local_res.css.eventregattarace_leader}">
Leader:<br></br> - &nbsp;<span ui:field="raceLeader" class="{local_res.css.eventregattarace_leader_name}"></span>
<ui:text from="{i18n.leader}"/>:<br></br> - &nbsp;<span ui:field="raceLeader" class="{local_res.css.eventregattarace_leader_name}"></span>
</div>
<div ui:field="legProgressDiv" class="{local_res.css.eventregattarace_details} {local_res.css.eventregattarace_legs}"><ui:text from='{i18n.leg}'/>&nbps;<span ui:field="currentLegNo" />/<span ui:field="totalLegsCount" />
<div class="{local_res.css.eventregattarace_legs_list}">
@@ -39,7 +39,7 @@ public class UpcomingEvent extends UIObject {
Event.setEventListener(eventOverviewLink, new EventListener() {
@Override
public void onBrowserEvent(Event browserEvent) {
navigator.goToEvent(event.id.toString(), event.getBaseURL());
navigator.goToEvent(event.id.toString(), event.getBaseURL(), event.isOnRemoteServer());
}
});
@@ -42,7 +42,7 @@ public class RecentEvent extends Composite {
Event.setEventListener(eventOverviewLink, new EventListener() {
@Override
public void onBrowserEvent(Event browserEvent) {
navigator.goToEvent(event.id.toString(), event.getBaseURL());
navigator.goToEvent(event.id.toString(), event.getBaseURL(), event.isOnRemoteServer());
}
});
@@ -55,12 +55,12 @@ public class SearchResultItem extends Composite {
@UiHandler("regattaLink")
public void goToRegatta(ClickEvent e) {
EventBaseDTO event = searchResult.getEvent();
placeNavigator.goToRegattaOfEvent(event.id.toString(), searchResult.getLeaderboardName(), searchResult.getBaseURL());
placeNavigator.goToRegattaOfEvent(event.id.toString(), searchResult.getLeaderboardName(), searchResult.getBaseURL(), searchResult.isOnRemoteServer());
}
@UiHandler("eventOverviewLink")
public void goToEventPlace(ClickEvent e) {
EventBaseDTO event = searchResult.getEvent();
placeNavigator.goToEvent(event.id.toString(), searchResult.getBaseURL());
placeNavigator.goToEvent(event.id.toString(), searchResult.getBaseURL(), searchResult.isOnRemoteServer());
}
}
@@ -7,12 +7,12 @@
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.shared.searchresult.SearchResultResources" />
<g:HTMLPanel>
<div class="{local_res.css.searchresult_content_item}">
<g:Anchor ui:field="regattaLink" styleName="{local_res.css.searchresult_content_item_headline}" />
<g:Anchor ui:field="regattaLink" styleName="{local_res.css.searchresult_content_item_headline}" href="javascript:;" />
<div class="{local_res.css.searchresult_content_item_description}"><span ui:field="resultRegattaDetails" />
<!-- <a href="http://" class="{local_res.css.searchresult_content_item_description_morelink}">More</a>-->
</div>
<div class="{local_res.css.searchresult_content_item_footer}">
<g:Anchor ui:field="eventOverviewLink" styleName="{local_res.css.searchresult_content_item_footer_link}" />
<g:Anchor ui:field="eventOverviewLink" styleName="{local_res.css.searchresult_content_item_footer_link}" href="javascript:;" />
<span class="{local_res.css.searchresult_content_item_footer_separator}">|</span><span ui:field="resultEventVenue" />
<span class="{local_res.css.searchresult_content_item_footer_separator}">|</span><span ui:field="resultEventDate" />
</div>
@@ -2,6 +2,7 @@ package com.sap.sailing.gwt.home.client.shared.stage;
import com.google.gwt.dom.client.Style.Display;
import com.sap.sailing.gwt.home.client.app.PlaceNavigator;
import com.sap.sailing.gwt.home.client.i18n.TextMessages;
import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil;
import com.sap.sailing.gwt.ui.shared.EventBaseDTO;
@@ -14,12 +15,12 @@ public class LiveStageTeaserBand extends StageTeaserBand {
bandSubtitle.setInnerText(EventDatesFormatterUtil.formatDateRangeWithYear(event.startDate, event.endDate));
actionLink.getStyle().setDisplay(Display.INLINE_BLOCK);
actionLink.setInnerText("Show event");
actionLink.setInnerText(TextMessages.INSTANCE.showEvent());
}
@Override
public void actionLinkClicked() {
EventBaseDTO event = getEvent();
getPlaceNavigator().goToEvent(event.id.toString(), event.getBaseURL());
getPlaceNavigator().goToEvent(event.id.toString(), event.getBaseURL(), event.isOnRemoteServer());
}
}
@@ -3038,6 +3038,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
for (Event event : getService().getAllEvents()) {
EventDTO eventDTO = convertToEventDTO(event);
eventDTO.setBaseURL(requestBaseURL);
eventDTO.setIsOnRemoteServer(false);
result.add(eventDTO);
}
return result;
@@ -3059,6 +3060,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
for (EventBase remoteEvent : remoteEvents) {
EventBaseDTO remoteEventDTO = convertToEventDTO(remoteEvent);
remoteEventDTO.setBaseURL(baseURL);
remoteEventDTO.setIsOnRemoteServer(true);
result.add(remoteEventDTO);
}
}
@@ -4769,24 +4771,25 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
if (serverNameOrNullForMain == null) {
Result<LeaderboardSearchResult> searchResult = getService().search(query);
for (LeaderboardSearchResult hit : searchResult.getHits()) {
result.add(createLeaderboardSearchResultDTO(hit, getRequestBaseURL()));
result.add(createLeaderboardSearchResultDTO(hit, getRequestBaseURL(), false));
}
} else {
RemoteSailingServerReference remoteRef = getService().getRemoteServerReferenceByName(serverNameOrNullForMain);
for (LeaderboardSearchResultBase hit : getService().searchRemotely(serverNameOrNullForMain, query).getHits()) {
result.add(createLeaderboardSearchResultDTO(hit, remoteRef.getURL()));
result.add(createLeaderboardSearchResultDTO(hit, remoteRef.getURL(), true));
}
}
return result;
}
private LeaderboardSearchResultDTO createLeaderboardSearchResultDTO(LeaderboardSearchResultBase leaderboardSearchResult, URL baseURL) {
private LeaderboardSearchResultDTO createLeaderboardSearchResultDTO(LeaderboardSearchResultBase leaderboardSearchResult, URL baseURL,
boolean isOnRemoteServer) {
ArrayList<LeaderboardGroupBaseDTO> leaderboardGroups = new ArrayList<>();
for (LeaderboardGroupBase lgb : leaderboardSearchResult.getLeaderboardGroups()) {
LeaderboardGroupBaseDTO leaderboardGroupDTO = convertToLeaderboardGroupBaseDTO(lgb);
leaderboardGroups.add(leaderboardGroupDTO);
}
return new LeaderboardSearchResultDTO(baseURL.toString(), leaderboardSearchResult.getLeaderboard().getName(),
return new LeaderboardSearchResultDTO(baseURL.toString(), isOnRemoteServer, leaderboardSearchResult.getLeaderboard().getName(),
leaderboardSearchResult.getLeaderboard().getDisplayName(), leaderboardSearchResult.getRegattaName(),
leaderboardSearchResult.getBoatClassName(), convertToEventDTO(leaderboardSearchResult.getEvent()),
leaderboardGroups);
@@ -32,6 +32,11 @@ public class EventBaseDTO extends NamedDTO implements IsSerializable {
* resolve to the correct host IP and Java server instance.
*/
private String baseURL;
/**
* Indicates whether the event is hosted on a remote server or not
*/
private boolean isOnRemoteServer;
EventBaseDTO() {} // for serialization only
@@ -130,4 +135,12 @@ public class EventBaseDTO extends NamedDTO implements IsSerializable {
return leaderboardGroups;
}
public boolean isOnRemoteServer() {
return isOnRemoteServer;
}
public void setIsOnRemoteServer(boolean isOnRemoteServer) {
this.isOnRemoteServer = isOnRemoteServer;
}
}
@@ -17,6 +17,7 @@ import com.sap.sailing.domain.base.RemoteSailingServerReference;
*/
public class LeaderboardSearchResultDTO implements IsSerializable {
private String baseURL;
private boolean isOnRemoteServer;
private String leaderboardName;
private String leaderboardDisplayName;
private String regattaName;
@@ -26,11 +27,12 @@ public class LeaderboardSearchResultDTO implements IsSerializable {
LeaderboardSearchResultDTO() {} // for GWT RPC serialization only
public LeaderboardSearchResultDTO(String baseURL, String leaderboardName, String leaderboardDisplayName,
public LeaderboardSearchResultDTO(String baseURL, boolean isOnRemoteServer, String leaderboardName, String leaderboardDisplayName,
String regattaName, String boatClassName, EventBaseDTO event,
Iterable<LeaderboardGroupBaseDTO> leaderboardGroups) {
super();
this.baseURL = baseURL;
this.isOnRemoteServer = isOnRemoteServer;
this.leaderboardName = leaderboardName;
this.leaderboardDisplayName = leaderboardDisplayName;
this.regattaName = regattaName;
@@ -91,4 +93,8 @@ public class LeaderboardSearchResultDTO implements IsSerializable {
sb.append(getRegattaName());
return sb.toString();
}
public boolean isOnRemoteServer() {
return isOnRemoteServer;
}
}