mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 14:57:12 +00:00
Merge remote-tracking branch 'origin/design2015' into design2015-mobile
Conflicts: java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeader.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java
This commit is contained in:
commit
d869f18e13
95 files changed
+2117
-844
No files matched your search
+2
-1
@@ -29,6 +29,7 @@ import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||
import com.sap.sailing.domain.regattalike.RegattaLikeIdentifier;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
import com.sap.sailing.domain.tracking.WindTrack;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
|
||||
/**
|
||||
* Offers methods to load domain objects from a Mongo DB
|
||||
@@ -97,7 +98,7 @@ public interface DomainObjectFactory {
|
||||
|
||||
Event loadEvent(String name);
|
||||
|
||||
Iterable<Event> loadAllEvents();
|
||||
Iterable<Pair<Event, Boolean>> loadAllEvents();
|
||||
|
||||
/**
|
||||
* The {@link MongoObjectFactory#storeEvent(Event)} method stores events and their links to leaderboard groups.
|
||||
|
||||
+5
-4
@@ -186,6 +186,7 @@ import com.sap.sse.common.TimeRange;
|
||||
import com.sap.sse.common.TypeBasedServiceFinder;
|
||||
import com.sap.sse.common.TypeBasedServiceFinderFactory;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.Util.Triple;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
@@ -972,15 +973,15 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<Event> loadAllEvents() {
|
||||
ArrayList<Event> result = new ArrayList<Event>();
|
||||
public Iterable<Pair<Event, Boolean>> loadAllEvents() {
|
||||
ArrayList<Pair<Event, Boolean>> result = new ArrayList<>();
|
||||
DBCollection eventCollection = database.getCollection(CollectionNames.EVENTS.name());
|
||||
|
||||
try {
|
||||
for (DBObject object : eventCollection.find()) {
|
||||
Event event = loadEvent(object);
|
||||
loadLegacyImageAndVideoURLs(event, object);
|
||||
result.add(event);
|
||||
Boolean requiresStoreAfterMigration = loadLegacyImageAndVideoURLs(event, object);
|
||||
result.add(new Pair<Event, Boolean>(event, requiresStoreAfterMigration));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.log(Level.SEVERE, "Error connecting to MongoDB, unable to load events.");
|
||||
|
||||
+352
-346
@@ -1,346 +1,352 @@
|
||||
package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.media.ImageDescriptor;
|
||||
import com.sap.sse.common.media.ImageDescriptorImpl;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
import com.sap.sse.common.media.MediaDescriptor;
|
||||
import com.sap.sse.common.media.MediaTagConstants;
|
||||
import com.sap.sse.common.media.MediaUtils;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
import com.sap.sse.common.media.VideoDescriptor;
|
||||
import com.sap.sse.common.media.VideoDescriptorImpl;
|
||||
|
||||
public abstract class EventBaseImpl implements EventBase {
|
||||
private static final long serialVersionUID = -5749964088848611074L;
|
||||
|
||||
private String name;
|
||||
private String description;
|
||||
private final Venue venue;
|
||||
private boolean isPublic;
|
||||
private final UUID id;
|
||||
private TimePoint startDate;
|
||||
private TimePoint endDate;
|
||||
private URL officialWebsiteURL;
|
||||
private ConcurrentLinkedQueue<ImageDescriptor> images;
|
||||
private ConcurrentLinkedQueue<VideoDescriptor> videos;
|
||||
|
||||
protected EventBaseImpl(String name, TimePoint startDate, TimePoint endDate, String venueName, boolean isPublic, UUID id) {
|
||||
this(name, startDate, endDate, new VenueImpl(venueName), isPublic, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param venue must not be <code>null</code>
|
||||
*/
|
||||
protected EventBaseImpl(String name, TimePoint startDate, TimePoint endDate, Venue venue, boolean isPublic, UUID id) {
|
||||
assert venue != null;
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.startDate = startDate;
|
||||
this.endDate = endDate;
|
||||
this.venue = venue;
|
||||
this.isPublic = isPublic;
|
||||
this.images = new ConcurrentLinkedQueue<ImageDescriptor>();
|
||||
this.videos = new ConcurrentLinkedQueue<VideoDescriptor>();
|
||||
}
|
||||
|
||||
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
|
||||
ois.defaultReadObject();
|
||||
if (images == null) {
|
||||
images = new ConcurrentLinkedQueue<ImageDescriptor>();
|
||||
}
|
||||
if (videos == null) {
|
||||
videos = new ConcurrentLinkedQueue<VideoDescriptor>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Venue getVenue() {
|
||||
return venue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param newName must not be <code>null</code>
|
||||
*/
|
||||
public void setName(String newName) {
|
||||
if (newName == null) {
|
||||
throw new IllegalArgumentException("An event name must not be null");
|
||||
}
|
||||
this.name = newName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPublic() {
|
||||
return isPublic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPublic(boolean isPublic) {
|
||||
this.isPublic = isPublic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TimePoint getStartDate() {
|
||||
return startDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStartDate(TimePoint startDate) {
|
||||
this.startDate = startDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TimePoint getEndDate() {
|
||||
return endDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEndDate(TimePoint endDate) {
|
||||
this.endDate = endDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<URL> getImageURLs() {
|
||||
List<URL> result = new ArrayList<URL>();
|
||||
for (ImageDescriptor image : images) {
|
||||
if (!image.hasTag(MediaTagConstants.SPONSOR) && !image.hasTag(MediaTagConstants.LOGO)) {
|
||||
result.add(image.getURL());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<URL> getVideoURLs() {
|
||||
List<URL> result = new ArrayList<URL>();
|
||||
for(VideoDescriptor video: videos) {
|
||||
result.add(video.getURL());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<URL> getSponsorImageURLs() {
|
||||
List<URL> result = new ArrayList<URL>();
|
||||
for(MediaDescriptor media : findMediaWithTag(images, MediaTagConstants.SPONSOR)) {
|
||||
result.add(media.getURL());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getLogoImageURL() {
|
||||
URL result = null;
|
||||
ImageDescriptor media = findImageWithTag(MediaTagConstants.LOGO);
|
||||
if(media != null) {
|
||||
result = media.getURL();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getOfficialWebsiteURL() {
|
||||
return officialWebsiteURL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOfficialWebsiteURL(URL officialWebsiteURL) {
|
||||
this.officialWebsiteURL = officialWebsiteURL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ImageDescriptor> getImages() {
|
||||
return Collections.unmodifiableCollection(images);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addImage(ImageDescriptor image) {
|
||||
if (!images.contains(image)) {
|
||||
images.add(image);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeImage(ImageDescriptor image) {
|
||||
images.remove(image);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setImages(Iterable<ImageDescriptor> images) {
|
||||
this.images.clear();
|
||||
if (images != null) {
|
||||
Util.addAll(images, this.images);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<VideoDescriptor> getVideos() {
|
||||
return Collections.unmodifiableCollection(videos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addVideo(VideoDescriptor video) {
|
||||
if (!videos.contains(video)) {
|
||||
videos.add(video);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeVideo(VideoDescriptor video) {
|
||||
videos.remove(video);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVideos(Iterable<VideoDescriptor> videos) {
|
||||
this.videos.clear();
|
||||
if (videos != null) {
|
||||
Util.addAll(videos, this.videos);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageDescriptor findImageWithTag(String tagName) {
|
||||
ImageDescriptor result = null;
|
||||
List<ImageDescriptor> mediaWithTag = findMediaWithTag(images, tagName);
|
||||
if(mediaWithTag.size() > 0) {
|
||||
result = mediaWithTag.get(0);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VideoDescriptor findVideoWithTag(String tagName) {
|
||||
VideoDescriptor result = null;
|
||||
List<VideoDescriptor> mediaWithTag = findMediaWithTag(videos, tagName);
|
||||
if(mediaWithTag.size() > 0) {
|
||||
result = mediaWithTag.get(0);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ImageDescriptor> findImagesWithTag(String tagName) {
|
||||
return findMediaWithTag(images, tagName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VideoDescriptor> findVideosWithTag(String tagName) {
|
||||
return findMediaWithTag(videos, tagName);
|
||||
}
|
||||
|
||||
private <T extends MediaDescriptor> List<T> findMediaWithTag(Iterable<T> media, String tagName) {
|
||||
List<T> result = new ArrayList<>();
|
||||
for (T mediaEntry : media) {
|
||||
if(mediaEntry.hasTag(tagName)) {
|
||||
result.add(mediaEntry);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets and converts all event images and videos from the old URL based format to the new richer format
|
||||
*/
|
||||
public boolean setMediaURLs(Iterable<URL> imageURLs, Iterable<URL> sponsorImageURLs, Iterable<URL> videoURLs,
|
||||
URL logoImageURL, Map<URL, ImageSize> imageSizes) {
|
||||
boolean changed = false;
|
||||
|
||||
for (URL url : imageURLs) {
|
||||
if (!hasMedia(images, url)) {
|
||||
ImageDescriptor image = migrateImageURLtoImage(url, getStartDate(), imageSizes.get(url));
|
||||
String urlAsString = url.toString();
|
||||
if (urlAsString.toLowerCase().indexOf("stage") > 0) {
|
||||
image.addTag(MediaTagConstants.STAGE);
|
||||
} else if (urlAsString.toLowerCase().indexOf("eventteaser") > 0) {
|
||||
image.addTag(MediaTagConstants.TEASER);
|
||||
} else {
|
||||
image.addTag(MediaTagConstants.GALLERY);
|
||||
}
|
||||
addImage(image);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
for (URL url : sponsorImageURLs) {
|
||||
if (!hasMedia(images, url)) {
|
||||
ImageDescriptor image = migrateImageURLtoImage(url, getStartDate(), imageSizes.get(url));
|
||||
image.addTag(MediaTagConstants.SPONSOR);
|
||||
addImage(image);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (logoImageURL != null && !hasMedia(images, logoImageURL)) {
|
||||
ImageDescriptor image = migrateImageURLtoImage(logoImageURL, getStartDate(), imageSizes.get(logoImageURL));
|
||||
image.addTag(MediaTagConstants.LOGO);
|
||||
addImage(image);
|
||||
changed = true;
|
||||
}
|
||||
|
||||
for (URL url : videoURLs) {
|
||||
if (!hasMedia(videos, url)) {
|
||||
MimeType mimeType = MediaUtils.detectMimeTypeFromUrl(url.toString());
|
||||
VideoDescriptor video = new VideoDescriptorImpl(url, mimeType, getStartDate());
|
||||
addVideo(video);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
private ImageDescriptor migrateImageURLtoImage(URL url, TimePoint createdAt, ImageSize imageSize) {
|
||||
ImageDescriptorImpl image = new ImageDescriptorImpl(url, createdAt);
|
||||
if (imageSize != null) {
|
||||
image.setSize(imageSize.getWidth(), imageSize.getHeight());
|
||||
} else {
|
||||
Pair<Integer, Integer> imageDimensions = MediaUtils.getImageDimensions(url);
|
||||
if (imageDimensions != null) {
|
||||
image.setSize(imageDimensions);
|
||||
}
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
private boolean hasMedia(Iterable<? extends MediaDescriptor> media, URL url) {
|
||||
for (MediaDescriptor mediaEntry : media) {
|
||||
if (url.equals(mediaEntry.getURL())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.media.ImageDescriptor;
|
||||
import com.sap.sse.common.media.ImageDescriptorImpl;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
import com.sap.sse.common.media.MediaDescriptor;
|
||||
import com.sap.sse.common.media.MediaTagConstants;
|
||||
import com.sap.sse.common.media.MediaUtils;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
import com.sap.sse.common.media.VideoDescriptor;
|
||||
import com.sap.sse.common.media.VideoDescriptorImpl;
|
||||
|
||||
public abstract class EventBaseImpl implements EventBase {
|
||||
private static final long serialVersionUID = -5749964088848611074L;
|
||||
|
||||
private String name;
|
||||
private String description;
|
||||
private final Venue venue;
|
||||
private boolean isPublic;
|
||||
private final UUID id;
|
||||
private TimePoint startDate;
|
||||
private TimePoint endDate;
|
||||
private URL officialWebsiteURL;
|
||||
private ConcurrentLinkedQueue<ImageDescriptor> images;
|
||||
private ConcurrentLinkedQueue<VideoDescriptor> videos;
|
||||
|
||||
protected EventBaseImpl(String name, TimePoint startDate, TimePoint endDate, String venueName, boolean isPublic, UUID id) {
|
||||
this(name, startDate, endDate, new VenueImpl(venueName), isPublic, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param venue must not be <code>null</code>
|
||||
*/
|
||||
protected EventBaseImpl(String name, TimePoint startDate, TimePoint endDate, Venue venue, boolean isPublic, UUID id) {
|
||||
assert venue != null;
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.startDate = startDate;
|
||||
this.endDate = endDate;
|
||||
this.venue = venue;
|
||||
this.isPublic = isPublic;
|
||||
this.images = new ConcurrentLinkedQueue<ImageDescriptor>();
|
||||
this.videos = new ConcurrentLinkedQueue<VideoDescriptor>();
|
||||
}
|
||||
|
||||
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
|
||||
ois.defaultReadObject();
|
||||
if (images == null) {
|
||||
images = new ConcurrentLinkedQueue<ImageDescriptor>();
|
||||
}
|
||||
if (videos == null) {
|
||||
videos = new ConcurrentLinkedQueue<VideoDescriptor>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Venue getVenue() {
|
||||
return venue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param newName must not be <code>null</code>
|
||||
*/
|
||||
public void setName(String newName) {
|
||||
if (newName == null) {
|
||||
throw new IllegalArgumentException("An event name must not be null");
|
||||
}
|
||||
this.name = newName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPublic() {
|
||||
return isPublic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPublic(boolean isPublic) {
|
||||
this.isPublic = isPublic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TimePoint getStartDate() {
|
||||
return startDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStartDate(TimePoint startDate) {
|
||||
this.startDate = startDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TimePoint getEndDate() {
|
||||
return endDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEndDate(TimePoint endDate) {
|
||||
this.endDate = endDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<URL> getImageURLs() {
|
||||
List<URL> result = new ArrayList<URL>();
|
||||
for (ImageDescriptor image : images) {
|
||||
if (!image.hasTag(MediaTagConstants.SPONSOR) && !image.hasTag(MediaTagConstants.LOGO)) {
|
||||
result.add(image.getURL());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<URL> getVideoURLs() {
|
||||
List<URL> result = new ArrayList<URL>();
|
||||
for(VideoDescriptor video: videos) {
|
||||
result.add(video.getURL());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<URL> getSponsorImageURLs() {
|
||||
List<URL> result = new ArrayList<URL>();
|
||||
for(MediaDescriptor media : findMediaWithTag(images, MediaTagConstants.SPONSOR)) {
|
||||
result.add(media.getURL());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getLogoImageURL() {
|
||||
URL result = null;
|
||||
ImageDescriptor media = findImageWithTag(MediaTagConstants.LOGO);
|
||||
if(media != null) {
|
||||
result = media.getURL();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getOfficialWebsiteURL() {
|
||||
return officialWebsiteURL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOfficialWebsiteURL(URL officialWebsiteURL) {
|
||||
this.officialWebsiteURL = officialWebsiteURL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ImageDescriptor> getImages() {
|
||||
return Collections.unmodifiableCollection(images);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addImage(ImageDescriptor image) {
|
||||
if (!images.contains(image)) {
|
||||
images.add(image);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeImage(ImageDescriptor image) {
|
||||
images.remove(image);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setImages(Iterable<ImageDescriptor> images) {
|
||||
this.images.clear();
|
||||
if (images != null) {
|
||||
Util.addAll(images, this.images);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<VideoDescriptor> getVideos() {
|
||||
return Collections.unmodifiableCollection(videos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addVideo(VideoDescriptor video) {
|
||||
if (!videos.contains(video)) {
|
||||
videos.add(video);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeVideo(VideoDescriptor video) {
|
||||
videos.remove(video);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVideos(Iterable<VideoDescriptor> videos) {
|
||||
this.videos.clear();
|
||||
if (videos != null) {
|
||||
Util.addAll(videos, this.videos);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageDescriptor findImageWithTag(String tagName) {
|
||||
ImageDescriptor result = null;
|
||||
List<ImageDescriptor> mediaWithTag = findMediaWithTag(images, tagName);
|
||||
if(mediaWithTag.size() > 0) {
|
||||
result = mediaWithTag.get(0);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VideoDescriptor findVideoWithTag(String tagName) {
|
||||
VideoDescriptor result = null;
|
||||
List<VideoDescriptor> mediaWithTag = findMediaWithTag(videos, tagName);
|
||||
if(mediaWithTag.size() > 0) {
|
||||
result = mediaWithTag.get(0);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasImageWithTag(String tagName) {
|
||||
List<ImageDescriptor> mediaWithTag = findMediaWithTag(images, tagName);
|
||||
return mediaWithTag.size() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ImageDescriptor> findImagesWithTag(String tagName) {
|
||||
return findMediaWithTag(images, tagName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VideoDescriptor> findVideosWithTag(String tagName) {
|
||||
return findMediaWithTag(videos, tagName);
|
||||
}
|
||||
|
||||
private <T extends MediaDescriptor> List<T> findMediaWithTag(Iterable<T> media, String tagName) {
|
||||
List<T> result = new ArrayList<>();
|
||||
for (T mediaEntry : media) {
|
||||
if(mediaEntry.hasTag(tagName)) {
|
||||
result.add(mediaEntry);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets and converts all event images and videos from the old URL based format to the new richer format
|
||||
*/
|
||||
public boolean setMediaURLs(Iterable<URL> imageURLs, Iterable<URL> sponsorImageURLs, Iterable<URL> videoURLs,
|
||||
URL logoImageURL, Map<URL, ImageSize> imageSizes) {
|
||||
boolean changed = false;
|
||||
|
||||
for (URL url : imageURLs) {
|
||||
if (!hasMedia(images, url)) {
|
||||
ImageDescriptor image = migrateImageURLtoImage(url, getStartDate(), imageSizes.get(url));
|
||||
String urlAsString = url.toString();
|
||||
if (urlAsString.toLowerCase().indexOf("stage") > 0) {
|
||||
image.addTag(MediaTagConstants.STAGE);
|
||||
} else if (urlAsString.toLowerCase().indexOf("eventteaser") > 0) {
|
||||
image.addTag(MediaTagConstants.TEASER);
|
||||
} else {
|
||||
image.addTag(MediaTagConstants.GALLERY);
|
||||
}
|
||||
addImage(image);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
for (URL url : sponsorImageURLs) {
|
||||
if (!hasMedia(images, url)) {
|
||||
ImageDescriptor image = migrateImageURLtoImage(url, getStartDate(), imageSizes.get(url));
|
||||
image.addTag(MediaTagConstants.SPONSOR);
|
||||
addImage(image);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (logoImageURL != null && !hasMedia(images, logoImageURL)) {
|
||||
ImageDescriptor image = migrateImageURLtoImage(logoImageURL, getStartDate(), imageSizes.get(logoImageURL));
|
||||
image.addTag(MediaTagConstants.LOGO);
|
||||
addImage(image);
|
||||
changed = true;
|
||||
}
|
||||
|
||||
for (URL url : videoURLs) {
|
||||
if (!hasMedia(videos, url)) {
|
||||
MimeType mimeType = MediaUtils.detectMimeTypeFromUrl(url.toString());
|
||||
VideoDescriptor video = new VideoDescriptorImpl(url, mimeType, getStartDate());
|
||||
addVideo(video);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
private ImageDescriptor migrateImageURLtoImage(URL url, TimePoint createdAt, ImageSize imageSize) {
|
||||
ImageDescriptorImpl image = new ImageDescriptorImpl(url, createdAt);
|
||||
if (imageSize != null) {
|
||||
image.setSize(imageSize.getWidth(), imageSize.getHeight());
|
||||
} else {
|
||||
Pair<Integer, Integer> imageDimensions = MediaUtils.getImageDimensions(url);
|
||||
if (imageDimensions != null) {
|
||||
image.setSize(imageDimensions);
|
||||
}
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
private boolean hasMedia(Iterable<? extends MediaDescriptor> media, URL url) {
|
||||
for (MediaDescriptor mediaEntry : media) {
|
||||
if (url.equals(mediaEntry.getURL())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -47,6 +47,7 @@
|
||||
<plugin id="com.sap.sailing.gwt.ui" autoStart="true" startLevel="5" />
|
||||
<plugin id="com.sap.sailing.kiworesultimport" autoStart="true" startLevel="3" />
|
||||
<plugin id="com.sap.sailing.manage2sail.resultimport" autoStart="true" startLevel="3" />
|
||||
<plugin id="com.sap.sailing.news" autoStart="true" startLevel="3" />
|
||||
<plugin id="com.sap.sailing.monitoring" autoStart="true" startLevel="6" />
|
||||
<plugin id="com.sap.sailing.polars" autoStart="true" startLevel="4" />
|
||||
<plugin id="com.sap.sailing.resultimport" autoStart="true" startLevel="3" />
|
||||
|
||||
@@ -54,6 +54,13 @@ Computes leaderboard information for sailing races and offers RESTful APIs to al
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.sap.sailing.news"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.sap.sailing.domain.tractracadapter"
|
||||
download-size="0"
|
||||
|
||||
@@ -47,7 +47,8 @@ Require-Bundle: com.sap.sailing.domain,
|
||||
com.sap.sse.security.common,
|
||||
com.sap.sse.filestorage,
|
||||
org.apache.shiro.core;bundle-version="1.2.2",
|
||||
com.sap.sse.gwt.theme
|
||||
com.sap.sse.gwt.theme,
|
||||
com.sap.sailing.news
|
||||
Bundle-Activator: com.sap.sailing.gwt.ui.server.Activator
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Import-Package: javax.jms;version="1.1.0",
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 308 B |
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
+10
@@ -15,6 +15,7 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.dto.RaceDTO;
|
||||
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
|
||||
@@ -116,6 +117,10 @@ public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> ex
|
||||
return new RegattaRacesPlace(contextForRegatta(regattaId));
|
||||
}
|
||||
|
||||
public RegattaLeaderboardPlace getPlaceForRegattaLeaderboard(String regattaId) {
|
||||
return new RegattaLeaderboardPlace(contextForRegatta(regattaId));
|
||||
}
|
||||
|
||||
protected EventContext contextForRegatta(String regattaId) {
|
||||
return new EventContext(ctx).withRegattaId(regattaId).withRegattaAnalyticsManager(null);
|
||||
}
|
||||
@@ -181,6 +186,11 @@ public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> ex
|
||||
return homePlacesNavigator.getEventNavigation(getPlaceForRegatta(regattaId), null, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlaceNavigation<RegattaLeaderboardPlace> getRegattaLeaderboardNavigation(String regattaId) {
|
||||
return homePlacesNavigator.getEventNavigation(getPlaceForRegattaLeaderboard(regattaId), null, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ensureRegattaStructure(final AsyncCallback<List<RaceGroupDTO>> callback) {
|
||||
if (ctx.getRaceGroups() != null) {
|
||||
|
||||
+2
-1
@@ -17,6 +17,7 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlac
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace;
|
||||
import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType;
|
||||
import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
|
||||
@@ -43,7 +44,7 @@ public class EventActivityProxy extends AbstractActivityProxy {
|
||||
} else {
|
||||
final UUID eventUUID = UUID.fromString(ctx.getEventId());
|
||||
|
||||
clientFactory.getHomeService().getEventViewById(eventUUID, new AsyncCallback<EventViewDTO>() {
|
||||
clientFactory.getDispatch().execute(new GetEventViewAction(eventUUID), new AsyncCallback<EventViewDTO>() {
|
||||
@Override
|
||||
public void onSuccess(final EventViewDTO event) {
|
||||
ctx.updateContext(event);
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ public class EventContext {
|
||||
return regattaId;
|
||||
}
|
||||
if(eventDTO != null && (eventDTO.getType() == EventType.SINGLE_REGATTA || eventDTO.getType() == EventType.SERIES_EVENT)) {
|
||||
return eventDTO.getRegattas().get(0).getDisplayName();
|
||||
return eventDTO.getRegattas().get(0).getId();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
+2
@@ -9,6 +9,7 @@ import com.google.gwt.user.client.ui.IsWidget;
|
||||
import com.sap.sailing.domain.common.dto.RaceDTO;
|
||||
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
|
||||
@@ -56,6 +57,7 @@ public interface EventView<PLACE extends AbstractEventPlace, PRES extends EventV
|
||||
|
||||
PlaceNavigation<RegattaRacesPlace> getRegattaRacesNavigation(String regattaName);
|
||||
PlaceNavigation<AbstractEventRegattaPlace> getRegattaNavigation(String regattaName);
|
||||
PlaceNavigation<RegattaLeaderboardPlace> getRegattaLeaderboardNavigation(String regattaName);
|
||||
|
||||
void ensureRegattaStructure(AsyncCallback<List<RaceGroupDTO>> callback);
|
||||
void ensureLeaderboardGroups(AsyncCallback<List<LeaderboardGroupDTO>> callback);
|
||||
|
||||
+1
-2
@@ -23,7 +23,6 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshMa
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceGroupDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewStageAction;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForEventAction;
|
||||
import com.sap.sse.common.Util.Triple;
|
||||
|
||||
@@ -62,7 +61,7 @@ public class MultiregattaOverviewTabView extends Composite implements Multiregat
|
||||
|
||||
RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch());
|
||||
|
||||
refreshManager.add(stage, new GetEventOverviewStageAction(currentPresenter.getCtx().getEventDTO().getId()));
|
||||
stage.setupRefresh(refreshManager);
|
||||
refreshManager.add(racesListLive, new GetLiveRacesForEventAction(currentPresenter.getCtx().getEventDTO().getId()));
|
||||
|
||||
contentArea.setWidget(this);
|
||||
|
||||
+62
-4
@@ -1,30 +1,60 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.overview;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.DivElement;
|
||||
import com.google.gwt.dom.client.Style.Display;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
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.common.client.SharedResources;
|
||||
import com.sap.sailing.gwt.common.client.SharedResources.MediaCss;
|
||||
import com.sap.sailing.gwt.home.client.place.event.EventView;
|
||||
import com.sap.sailing.gwt.home.client.place.event.partials.countdown.Countdown;
|
||||
import com.sap.sailing.gwt.home.client.place.event.partials.message.Message;
|
||||
import com.sap.sailing.gwt.home.client.place.event.partials.updatesBox.UpdatesBox;
|
||||
import com.sap.sailing.gwt.home.client.place.event.partials.video.Video;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.ListResult;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageContentDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewTickerStageDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewVideoStageDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewNewsAction;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewStageAction;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventState;
|
||||
|
||||
public class EventOverviewStage extends Composite implements RefreshableWidget<EventOverviewStageDTO> {
|
||||
public class EventOverviewStage extends Composite {
|
||||
|
||||
private final RefreshableWidget<EventOverviewStageDTO> refreshable = new RefreshableWidget<EventOverviewStageDTO>() {
|
||||
@Override
|
||||
public void setData(EventOverviewStageDTO data, long nextUpdate, int updateNo) {
|
||||
setStageData(data);
|
||||
}
|
||||
};
|
||||
private final RefreshableWidget<ListResult<NewsEntryDTO>> newsRefreshable = new RefreshableWidget<ListResult<NewsEntryDTO>>() {
|
||||
@Override
|
||||
public void setData(ListResult<NewsEntryDTO> data, long nextUpdate, int updateNo) {
|
||||
setNews(data.getValues());
|
||||
}
|
||||
};
|
||||
|
||||
private static StageUiBinder uiBinder = GWT.create(StageUiBinder.class);
|
||||
|
||||
interface StageUiBinder extends UiBinder<Widget, EventOverviewStage> {
|
||||
}
|
||||
|
||||
private final MediaCss mediaCss = SharedResources.INSTANCE.mediaCss();
|
||||
|
||||
@UiField SimplePanel stage;
|
||||
@UiField Message message;
|
||||
@UiField DivElement updatesWrapperUi;
|
||||
@UiField(provided = true) UpdatesBox updatesUi;
|
||||
|
||||
private Widget lastContent;
|
||||
|
||||
@@ -32,11 +62,23 @@ public class EventOverviewStage extends Composite implements RefreshableWidget<E
|
||||
|
||||
public EventOverviewStage(EventView.Presenter presenter) {
|
||||
this.presenter = presenter;
|
||||
|
||||
updatesUi = new UpdatesBox(presenter);
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
}
|
||||
|
||||
public void setupRefresh(RefreshManager refreshManager) {
|
||||
refreshManager.add(refreshable, new GetEventOverviewStageAction(presenter.getCtx().getEventDTO().getId()));
|
||||
|
||||
if(presenter.getCtx().getEventDTO().getState() == EventState.RUNNING) {
|
||||
refreshManager.add(newsRefreshable, new GetEventOverviewNewsAction(presenter.getCtx().getEventDTO().getId()));
|
||||
} else {
|
||||
updatesUi.removeFromParent();
|
||||
updatesWrapperUi.removeFromParent();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setData(EventOverviewStageDTO stageData, long nextUpdate, int updateNo) {
|
||||
private void setStageData(EventOverviewStageDTO stageData) {
|
||||
message.setMessage(stageData.getEventMessage());
|
||||
|
||||
EventOverviewStageContentDTO data = stageData.getStageContent();
|
||||
@@ -55,5 +97,21 @@ public class EventOverviewStage extends Composite implements RefreshableWidget<E
|
||||
}
|
||||
stage.setWidget(lastContent);
|
||||
}
|
||||
|
||||
|
||||
private void setNews(List<NewsEntryDTO> news) {
|
||||
if(lastContent == null) {
|
||||
setStageData(new EventOverviewStageDTO(null, new EventOverviewTickerStageDTO(null, null, null)));
|
||||
}
|
||||
|
||||
if(news.isEmpty()) {
|
||||
updatesWrapperUi.getStyle().setDisplay(Display.NONE);
|
||||
stage.removeStyleName(mediaCss.medium7());
|
||||
stage.removeStyleName(mediaCss.large8());
|
||||
} else {
|
||||
updatesWrapperUi.getStyle().clearDisplay();
|
||||
updatesUi.setData(news);
|
||||
stage.addStyleName(mediaCss.medium7());
|
||||
stage.addStyleName(mediaCss.large8());
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
-1
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" xmlns:m="urn:import:com.sap.sailing.gwt.home.client.place.event.partials.message">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" xmlns:m="urn:import:com.sap.sailing.gwt.home.client.place.event.partials.message" xmlns:u="urn:import:com.sap.sailing.gwt.home.client.place.event.partials.updatesBox">
|
||||
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
|
||||
<ui:with field="i18n_ubi" type="com.sap.sailing.gwt.common.client.i18n.TextMessages"/>
|
||||
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
|
||||
@@ -8,6 +8,9 @@
|
||||
<m:Message ui:field="message" />
|
||||
<div class="{res.mediaCss.grid}">
|
||||
<g:SimplePanel ui:field="stage" addStyleNames="{res.mediaCss.small12} {res.mediaCss.columns}" />
|
||||
<div ui:field="updatesWrapperUi" class="{res.mediaCss.small12} {res.mediaCss.medium5} {res.mediaCss.large4} {res.mediaCss.columns}" style="display: none;">
|
||||
<u:UpdatesBox ui:field="updatesUi" addStyleNames="{res.mainCss.spacermargin} {res.mainCss.spacermargintopsmall} {res.mainCss.spacermarginonlyonsmall}" />
|
||||
</div>
|
||||
</div>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
+3
-3
@@ -11,9 +11,9 @@
|
||||
.countdown_image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-size: 67.8em 50.46666666666667em;
|
||||
background-position: center -0.933333333333333em;
|
||||
background-image: url("../images/home/countdown-thumbnail.png");
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-image: url("images/home/countdown-thumbnail.png");
|
||||
}
|
||||
.countdown_content {
|
||||
position: absolute;
|
||||
|
||||
+8
-2
@@ -97,10 +97,16 @@ public class EventHeader extends Composite {
|
||||
private void initFields() {
|
||||
LogoUtil.setEventLogo(eventLogo, event);
|
||||
|
||||
String eventDisplayName = event.getDisplayName();
|
||||
String nameToShow;
|
||||
if(presenter.showRegattaMetadata()) {
|
||||
HasRegattaMetadata regattaMetadata = presenter.getRegattaMetadata();
|
||||
nameToShow = regattaMetadata.getDisplayName();
|
||||
String regattaDisplayName = regattaMetadata.getDisplayName();
|
||||
if(regattaDisplayName.toLowerCase().contains(eventDisplayName.toLowerCase())) {
|
||||
nameToShow = regattaDisplayName;
|
||||
} else {
|
||||
nameToShow = eventDisplayName + " - " + regattaDisplayName;
|
||||
}
|
||||
|
||||
if(regattaMetadata.getCompetitorsCount() > 0) {
|
||||
competitors.setInnerText((i18n.competitorsCount(regattaMetadata.getCompetitorsCount())));
|
||||
@@ -128,7 +134,7 @@ public class EventHeader extends Composite {
|
||||
|
||||
hide(eventVenueContainer, eventLink);
|
||||
} else {
|
||||
nameToShow = event.getDisplayName();
|
||||
nameToShow = eventDisplayName;
|
||||
eventDate.setInnerHTML(EventDatesFormatterUtil.formatDateRangeWithYear(event.getStartDate(), event.getEndDate()));
|
||||
eventVenue.setInnerText(event.getLocationAndVenueAndCountry());
|
||||
|
||||
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
.box {
|
||||
font-size: 1rem;
|
||||
border: 1px solid #dedede;
|
||||
border-radius: 0.333333333333333em;
|
||||
overflow: hidden;
|
||||
}
|
||||
.box_header {
|
||||
color: #333;
|
||||
font-size: 1.2em;
|
||||
font-weight: 700;
|
||||
background: #f2f2f2;
|
||||
padding: 1.111111111111111em;
|
||||
border-bottom: 1px solid #dedede;
|
||||
}
|
||||
.box_content {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
max-height: 23.933333333333334em;
|
||||
overflow-y: auto;
|
||||
}
|
||||
@media (max-width: 976px) {
|
||||
.box_content {
|
||||
height: 18em;
|
||||
}
|
||||
}
|
||||
@media (max-width: 719px) {
|
||||
.box_content {
|
||||
height: 12em;
|
||||
}
|
||||
}
|
||||
.box_content_item {
|
||||
border-bottom: 1px solid #dedede;
|
||||
}
|
||||
.box_content_item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.updatesbox {
|
||||
font-size: 1rem;
|
||||
}
|
||||
.updatesbox_item {
|
||||
display: block;
|
||||
height: 6em;
|
||||
padding: 1.333333333333333em 2em 1.333333333333333em 1em;
|
||||
position: relative;
|
||||
color: #0a0a0a;
|
||||
}
|
||||
.updatesbox_itemlink {
|
||||
background-image: url("images/home/arrow-grey-right.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 9px 16px;
|
||||
background-position: 95% 50%;
|
||||
}
|
||||
.updatesbox_itemlink:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.updatesbox_item_icon {
|
||||
width: 3.333333333333333em;
|
||||
height: 3.333333333333333em;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 2.666666666666667em;
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
-moz-transform: translate(-50%, -50%);
|
||||
-ms-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
background-size: contain;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
-webkit-filter: grayscale(100%);
|
||||
filter: grayscale(100%);
|
||||
}
|
||||
@media (max-width: 1190px) {
|
||||
.updatesbox_item_icon {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media (max-width: 720px) {
|
||||
.updatesbox_item_icon {
|
||||
display: inherit;
|
||||
}
|
||||
}
|
||||
.updatesbox_item_content {
|
||||
margin-left: 4em;
|
||||
padding-left: 0.8em;
|
||||
border-left: 1px solid #dedede;
|
||||
line-height: 1.3;
|
||||
}
|
||||
@media (max-width: 1190px) {
|
||||
.updatesbox_item_content {
|
||||
margin: 0;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
@media (max-width: 720px) {
|
||||
.updatesbox_item_content {
|
||||
margin-left: 4em;
|
||||
border-left: 1px solid #dedede;
|
||||
}
|
||||
}
|
||||
.updatesbox_item_content_text {
|
||||
font-size: 1em;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.updatesbox_item_content_text_boatclass {
|
||||
display: none;
|
||||
}
|
||||
@media (max-width: 1190px) {
|
||||
.updatesbox_item_content_text_boatclass {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.partials.updatesBox;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.UListElement;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.home.client.place.event.EventView;
|
||||
import com.sap.sailing.gwt.home.client.place.event.EventView.Presenter;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO;
|
||||
|
||||
public class UpdatesBox extends Composite {
|
||||
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
|
||||
|
||||
interface MyUiBinder extends UiBinder<Widget, UpdatesBox> {
|
||||
}
|
||||
|
||||
@UiField(provided = true) FlowPanel entries = new FlowPanel(UListElement.TAG);
|
||||
private Presenter presenter;
|
||||
|
||||
public UpdatesBox(EventView.Presenter presenter) {
|
||||
this.presenter = presenter;
|
||||
|
||||
UpdatesBoxResources.INSTANCE.css().ensureInjected();
|
||||
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
}
|
||||
|
||||
public void setData(Collection<NewsEntryDTO> newsEntries) {
|
||||
entries.clear();
|
||||
for (NewsEntryDTO newsEntryDTO : newsEntries) {
|
||||
entries.add(new UpdatesBoxItem(newsEntryDTO, presenter));
|
||||
}
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared">
|
||||
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
|
||||
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
|
||||
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.partials.updatesBox.UpdatesBoxResources" />
|
||||
<g:HTMLPanel tag="section" addStyleNames="{local_res.css.updatesbox} {local_res.css.box}">
|
||||
<header class="{local_res.css.box_header}">
|
||||
<ui:text from='{i18n.latestNews}' />
|
||||
</header>
|
||||
<g:FlowPanel ui:field="entries" addStyleNames="{local_res.css.box_content}" />
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.partials.updatesBox;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.AnchorElement;
|
||||
import com.google.gwt.dom.client.DivElement;
|
||||
import com.google.gwt.dom.client.Element;
|
||||
import com.google.gwt.dom.client.Node;
|
||||
import com.google.gwt.dom.client.SpanElement;
|
||||
import com.google.gwt.i18n.client.DateTimeFormat;
|
||||
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.Event;
|
||||
import com.google.gwt.user.client.EventListener;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.common.client.BoatClassImageResolver;
|
||||
import com.sap.sailing.gwt.common.client.LinkUtil;
|
||||
import com.sap.sailing.gwt.home.client.place.event.EventView;
|
||||
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.news.AbstractRaceNewsEntryDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.news.LeaderboardNewsEntryDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO;
|
||||
|
||||
public class UpdatesBoxItem extends Widget {
|
||||
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
|
||||
|
||||
interface MyUiBinder extends UiBinder<Element, UpdatesBoxItem> {
|
||||
}
|
||||
|
||||
@UiField AnchorElement link;
|
||||
@UiField DivElement icon;
|
||||
@UiField SpanElement titleUi;
|
||||
@UiField SpanElement boatClassUi;
|
||||
@UiField DivElement messageUi;
|
||||
@UiField DivElement timestampUi;
|
||||
|
||||
public UpdatesBoxItem(NewsEntryDTO entry, EventView.Presenter presenter) {
|
||||
setElement(uiBinder.createAndBindUi(this));
|
||||
|
||||
titleUi.setInnerText(entry.getTitle());
|
||||
messageUi.setInnerText(entry.getMessage());
|
||||
|
||||
String boatClass = entry.getBoatClass();
|
||||
if(boatClass != null && !boatClass.isEmpty()) {
|
||||
icon.getStyle().setBackgroundImage("url(\"" + BoatClassImageResolver.getBoatClassIconResource(boatClass).getSafeUri().asString() + "\")");
|
||||
boatClassUi.setInnerText(" / " + boatClass);
|
||||
} else {
|
||||
boatClassUi.removeFromParent();
|
||||
}
|
||||
if(boatClass != null && !boatClass.isEmpty()) {
|
||||
|
||||
}
|
||||
|
||||
Date timestamp = entry.getTimestamp();
|
||||
if(timestamp == null) {
|
||||
timestampUi.removeFromParent();
|
||||
} else {
|
||||
timestampUi.setInnerText(DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_MEDIUM).format(timestamp));
|
||||
}
|
||||
|
||||
String directLink = entry.getExternalURL();
|
||||
if(directLink != null) {
|
||||
link.setHref(directLink);
|
||||
link.setTarget("_blank");
|
||||
} else {
|
||||
PlaceNavigation<?> placeNavigation = null;
|
||||
if(entry instanceof LeaderboardNewsEntryDTO) {
|
||||
directLink = ((LeaderboardNewsEntryDTO) entry).getExternalURL();
|
||||
placeNavigation = presenter.getRegattaLeaderboardNavigation(((LeaderboardNewsEntryDTO) entry).getLeaderboardName());
|
||||
} else if(entry instanceof AbstractRaceNewsEntryDTO) {
|
||||
AbstractRaceNewsEntryDTO raceEntry = (AbstractRaceNewsEntryDTO) entry;
|
||||
if(raceEntry.getTrackedRaceName() != null) {
|
||||
directLink = presenter.getRaceViewerURL(raceEntry.getRegattaName(), raceEntry.getTrackedRaceName());
|
||||
}
|
||||
}
|
||||
if(placeNavigation != null) {
|
||||
link.setHref(placeNavigation.getTargetUrl());
|
||||
Event.sinkEvents(link, Event.ONCLICK);
|
||||
final PlaceNavigation<?> pn = placeNavigation;
|
||||
Event.setEventListener(link, new EventListener() {
|
||||
@Override
|
||||
public void onBrowserEvent(Event event) {
|
||||
if(LinkUtil.handleLinkClick(event)) {
|
||||
event.preventDefault();
|
||||
pn.goToPlace();
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
link.removeFromParent();
|
||||
while(link.hasChildNodes()) {
|
||||
Node firstChild = link.getChild(0);
|
||||
firstChild.removeFromParent();
|
||||
getElement().appendChild(firstChild);
|
||||
}
|
||||
addStyleName(UpdatesBoxResources.INSTANCE.css().updatesbox_item());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared">
|
||||
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
|
||||
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.partials.updatesBox.UpdatesBoxResources" />
|
||||
<li class="{local_res.css.box_content_item}">
|
||||
<a ui:field="link" class="{local_res.css.updatesbox_item} {local_res.css.updatesbox_itemlink}">
|
||||
<div ui:field="icon" style="background-image: url('images/home/news-i.png')" class="{local_res.css.updatesbox_item_icon}"></div>
|
||||
<div class="{local_res.css.updatesbox_item_content}">
|
||||
<b class="{local_res.css.updatesbox_item_content_text}">
|
||||
<span ui:field="titleUi"></span>
|
||||
<span ui:field="boatClassUi" class="{local_res.css.updatesbox_item_content_text_boatclass}"></span>
|
||||
</b>
|
||||
<div ui:field="messageUi" class="{local_res.css.updatesbox_item_content_text}">
|
||||
</div>
|
||||
<div ui:field="timestampUi" class="{local_res.css.updatesbox_item_content_text}">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
</ui:UiBinder>
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.partials.updatesBox;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.resources.client.ClientBundle;
|
||||
import com.google.gwt.resources.client.CssResource;
|
||||
|
||||
public interface UpdatesBoxResources extends ClientBundle {
|
||||
public static final UpdatesBoxResources INSTANCE = GWT.create(UpdatesBoxResources.class);
|
||||
|
||||
@Source("UpdatesBox.gss")
|
||||
LocalCss css();
|
||||
|
||||
public interface LocalCss extends CssResource {
|
||||
String box();
|
||||
String box_header();
|
||||
String box_content();
|
||||
String box_content_item();
|
||||
String updatesbox();
|
||||
String updatesbox_item();
|
||||
String updatesbox_itemlink();
|
||||
String updatesbox_item_icon();
|
||||
String updatesbox_item_content();
|
||||
String updatesbox_item_content_text();
|
||||
String updatesbox_item_content_text_boatclass();
|
||||
}
|
||||
}
|
||||
+1
-4
@@ -13,7 +13,6 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewStageAction;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForRegattaAction;
|
||||
|
||||
/**
|
||||
@@ -46,11 +45,9 @@ public class RegattaOverviewTabView extends Composite implements RegattaTabView<
|
||||
|
||||
initWidget(ourUiBinder.createAndBindUi(this));
|
||||
|
||||
// TODO CF
|
||||
RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch());
|
||||
|
||||
// TODO regatta specific depending on event type
|
||||
refreshManager.add(stage, new GetEventOverviewStageAction(currentPresenter.getCtx().getEventDTO().getId()));
|
||||
stage.setupRefresh(refreshManager);
|
||||
refreshManager.add(racesListLive, new GetLiveRacesForRegattaAction(currentPresenter.getCtx().getEventDTO()
|
||||
.getId(), currentPresenter.getCtx().getRegattaId()));
|
||||
|
||||
|
||||
+1
-2
@@ -1,8 +1,7 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload;
|
||||
|
||||
import com.google.gwt.user.client.ui.IsWidget;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DTO;
|
||||
|
||||
public interface RefreshableWidget<D extends DTO> extends IsWidget {
|
||||
public interface RefreshableWidget<D extends DTO> {
|
||||
void setData(D data, long nextUpdate, int updateNo);
|
||||
}
|
||||
+2
-1
@@ -18,6 +18,7 @@ import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsDTO;
|
||||
import com.sap.sailing.gwt.home.mobile.places.event.EventView.Presenter;
|
||||
import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
|
||||
|
||||
@@ -36,7 +37,7 @@ public class EventActivity extends AbstractActivity implements Presenter {
|
||||
if(place.getCtx().getEventDTO() == null) {
|
||||
currentEventUUId = UUID.fromString(place.getCtx().getEventId());
|
||||
|
||||
clientFactory.getHomeService().getEventViewById(currentEventUUId, new AsyncCallback<EventViewDTO>() {
|
||||
clientFactory.getDispatch().execute(new GetEventViewAction(currentEventUUId), new AsyncCallback<EventViewDTO>() {
|
||||
@Override
|
||||
public void onSuccess(final EventViewDTO event) {
|
||||
place.getCtx().updateContext(event);
|
||||
|
||||
+24
-186
@@ -20,30 +20,21 @@ import org.osgi.util.tracker.ServiceTracker;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RemoteSailingServerReference;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.gwt.ui.client.HomeService;
|
||||
import com.sap.sailing.gwt.ui.server.Activator;
|
||||
import com.sap.sailing.gwt.ui.server.ProxiedRemoteServiceServlet;
|
||||
import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO.EventSeriesState;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventState;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaConstants;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingVideoDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.start.EventStageDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.start.StageEventType;
|
||||
import com.sap.sailing.gwt.ui.shared.start.StartViewDTO;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
@@ -58,16 +49,34 @@ import com.sap.sse.common.media.ImageDescriptor;
|
||||
import com.sap.sse.common.media.MediaTagConstants;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
import com.sap.sse.common.media.VideoDescriptor;
|
||||
import com.sap.sse.gwt.client.media.ImageDTO;
|
||||
import com.sap.sse.util.ServiceTrackerFactory;
|
||||
|
||||
/**
|
||||
* The server side implementation of the RPC service.
|
||||
*/
|
||||
public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements HomeService {
|
||||
private static final long serialVersionUID = 3947782997746039939L;
|
||||
|
||||
private static final int MAX_STAGE_EVENTS = 5;
|
||||
private static final int MAX_RECENT_EVENTS = 3;
|
||||
private static final int MAX_VIDEO_COUNT = 3;
|
||||
|
||||
private final ServiceTracker<RacingEventService, RacingEventService> racingEventServiceTracker;
|
||||
|
||||
public HomeServiceImpl() {
|
||||
BundleContext context = Activator.getDefault();
|
||||
|
||||
racingEventServiceTracker = ServiceTrackerFactory.createAndOpen(context, RacingEventService.class);
|
||||
}
|
||||
|
||||
protected RacingEventService getService() {
|
||||
return racingEventServiceTracker.getService();
|
||||
}
|
||||
|
||||
private interface EventVisitor {
|
||||
void visit(EventBase event, boolean onRemoteServer, URL baseURL);
|
||||
}
|
||||
|
||||
private static class EventHolder {
|
||||
EventBase event;
|
||||
boolean onRemoteServer;
|
||||
@@ -91,24 +100,6 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
}
|
||||
}
|
||||
|
||||
private static final long serialVersionUID = 3947782997746039939L;
|
||||
|
||||
private static final int MAX_STAGE_EVENTS = 5;
|
||||
private static final int MAX_RECENT_EVENTS = 3;
|
||||
private static final int MAX_VIDEO_COUNT = 3;
|
||||
|
||||
private final ServiceTracker<RacingEventService, RacingEventService> racingEventServiceTracker;
|
||||
|
||||
public HomeServiceImpl() {
|
||||
BundleContext context = Activator.getDefault();
|
||||
|
||||
racingEventServiceTracker = ServiceTrackerFactory.createAndOpen(context, RacingEventService.class);
|
||||
}
|
||||
|
||||
protected RacingEventService getService() {
|
||||
return racingEventServiceTracker.getService(); // grab the service
|
||||
}
|
||||
|
||||
public void forAllPublicEvents(EventVisitor visitor) throws MalformedURLException {
|
||||
URL requestedBaseURL = getRequestBaseURL();
|
||||
for (Event event : getService().getAllEvents()) {
|
||||
@@ -177,7 +168,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
Pair<StageEventType, EventHolder> pair = featuredEvents.get(i);
|
||||
StageEventType stageType = pair.getA();
|
||||
EventHolder holder = pair.getB();
|
||||
result.addStageEvent(convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType));
|
||||
result.addStageEvent(HomeServiceUtil.convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType, getService()));
|
||||
|
||||
EventReferenceDTO eventRef = new EventReferenceDTO(holder.event);
|
||||
|
||||
@@ -209,7 +200,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
|
||||
for(EventHolder holder : recentEventsOfLast12Month) {
|
||||
if(result.getRecentEvents().size() < MAX_RECENT_EVENTS) {
|
||||
result.addRecentEvent(convertToEventListDTO(holder.event, holder.baseURL, holder.onRemoteServer));
|
||||
result.addRecentEvent(HomeServiceUtil.convertToEventListDTO(holder.event, holder.baseURL, holder.onRemoteServer, getService()));
|
||||
}
|
||||
|
||||
EventBase event = holder.event;
|
||||
@@ -264,89 +255,6 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
// TODO media
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventViewDTO getEventViewById(UUID id) {
|
||||
Event event = getService().getEvent(id);
|
||||
if (event == null) {
|
||||
throw new RuntimeException("Event not found");
|
||||
}
|
||||
|
||||
EventViewDTO dto = new EventViewDTO();
|
||||
mapToMetadataDTO(event, dto);
|
||||
|
||||
ImageDescriptor logoImage = event.findImageWithTag(MediaTagConstants.LOGO);
|
||||
dto.setLogoImage(logoImage != null ? convertToImageDTO(logoImage) : null);
|
||||
dto.setOfficialWebsiteURL(event.getOfficialWebsiteURL() == null ? null : event.getOfficialWebsiteURL().toString());
|
||||
|
||||
dto.setHasMedia(HomeServiceUtil.hasMedia(event));
|
||||
dto.setState(HomeServiceUtil.calculateEventState(event));
|
||||
dto.setHasAnalytics(EventState.RUNNING.compareTo(dto.getState()) <= 0);
|
||||
|
||||
boolean isFakeSeries = HomeServiceUtil.isFakeSeries(event);
|
||||
|
||||
for (LeaderboardGroup leaderboardGroup : event.getLeaderboardGroups()) {
|
||||
for (Leaderboard leaderboard : leaderboardGroup.getLeaderboards()) {
|
||||
if(leaderboard instanceof RegattaLeaderboard) {
|
||||
Regatta regatta = getService().getRegattaByName(leaderboard.getName());
|
||||
if(isFakeSeries && !HomeServiceUtil.isPartOfEvent(event, regatta)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
RegattaMetadataDTO regattaDTO = HomeServiceUtil.toRegattaMetadataDTO(leaderboardGroup, leaderboard);
|
||||
regattaDTO.setStartDate(regatta.getStartDate() != null ? regatta.getStartDate().asDate() : null);
|
||||
regattaDTO.setEndDate(regatta.getEndDate() != null ? regatta.getEndDate().asDate() : null);
|
||||
regattaDTO.setState(HomeServiceUtil.calculateRegattaState(regattaDTO));
|
||||
dto.getRegattas().add(regattaDTO);
|
||||
|
||||
} else if(leaderboard instanceof FlexibleLeaderboard) {
|
||||
RegattaMetadataDTO regattaDTO = HomeServiceUtil.toRegattaMetadataDTO(leaderboardGroup, leaderboard);
|
||||
|
||||
regattaDTO.setStartDate(null);
|
||||
regattaDTO.setEndDate(null);
|
||||
regattaDTO.setState(HomeServiceUtil.calculateRegattaState(regattaDTO));
|
||||
dto.getRegattas().add(regattaDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isFakeSeries) {
|
||||
dto.setType(EventType.SERIES_EVENT);
|
||||
|
||||
LeaderboardGroup overallLeaderboardGroup = event.getLeaderboardGroups().iterator().next();
|
||||
dto.setSeriesName(overallLeaderboardGroup.getDisplayName() != null ? overallLeaderboardGroup.getDisplayName() :overallLeaderboardGroup.getName());
|
||||
List<Event> fakeSeriesEvents = new ArrayList<Event>();
|
||||
|
||||
for (Event eventOfSeries : getService().getAllEvents()) {
|
||||
for (LeaderboardGroup leaderboardGroup : eventOfSeries.getLeaderboardGroups()) {
|
||||
if (overallLeaderboardGroup.equals(leaderboardGroup)) {
|
||||
fakeSeriesEvents.add(eventOfSeries);
|
||||
}
|
||||
}
|
||||
}
|
||||
Collections.sort(fakeSeriesEvents, new Comparator<Event>() {
|
||||
public int compare(Event e1, Event e2) {
|
||||
return e1.getStartDate().compareTo(e2.getEndDate());
|
||||
}
|
||||
});
|
||||
for(Event eventInSeries: fakeSeriesEvents) {
|
||||
String displayName = getLocation(eventInSeries);
|
||||
if(displayName == null) {
|
||||
displayName = eventInSeries.getName();
|
||||
}
|
||||
dto.getEventsOfSeries().add(new EventReferenceDTO(eventInSeries.getId(), displayName));
|
||||
}
|
||||
} else {
|
||||
dto.setType(dto.getRegattas().size() == 1 ? EventType.SINGLE_REGATTA: EventType.MULTI_REGATTA);
|
||||
}
|
||||
|
||||
// Special solution for Kieler Woche 2015
|
||||
if("a9d6c5d5-cac3-47f2-9b5c-506e441819a1".equals(event.getId().toString())) {
|
||||
dto.setSailorsInfoURL("http://sailorsinfo.kieler-woche.de/");
|
||||
}
|
||||
|
||||
return dto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventSeriesViewDTO getEventSeriesViewById(UUID id) {
|
||||
@@ -358,7 +266,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
EventSeriesViewDTO dto = new EventSeriesViewDTO();
|
||||
dto.setId(id);
|
||||
ImageDescriptor logoImage = o.findImageWithTag(MediaTagConstants.LOGO);
|
||||
dto.setLogoImage(logoImage != null ? convertToImageDTO(logoImage) : null);
|
||||
dto.setLogoImage(logoImage != null ? HomeServiceUtil.convertToImageDTO(logoImage) : null);
|
||||
// TODO implement correctly. We currently do not show media for series.
|
||||
dto.setHasMedia(false);
|
||||
|
||||
@@ -387,7 +295,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
}
|
||||
});
|
||||
for(Event eventInSeries: fakeSeriesEvents) {
|
||||
EventMetadataDTO eventOfSeries = convertToMetadataDTO(eventInSeries);
|
||||
EventMetadataDTO eventOfSeries = HomeServiceUtil.convertToMetadataDTO(eventInSeries, getService());
|
||||
dto.addEvent(eventOfSeries);
|
||||
|
||||
oneEventStarted |= eventOfSeries.isStarted();
|
||||
@@ -448,7 +356,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
forAllPublicEvents(new EventVisitor() {
|
||||
@Override
|
||||
public void visit(EventBase event, boolean onRemoteServer, URL baseURL) {
|
||||
EventListEventDTO eventDTO = convertToEventListDTO(event, baseURL, onRemoteServer);
|
||||
EventListEventDTO eventDTO = HomeServiceUtil.convertToEventListDTO(event, baseURL, onRemoteServer, getService());
|
||||
result.addEvent(eventDTO, getYear(eventDTO.getStartDate()));
|
||||
}
|
||||
});
|
||||
@@ -460,74 +368,4 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
cal.setTime(date);
|
||||
return cal.get(Calendar.YEAR);
|
||||
}
|
||||
|
||||
private EventStageDTO convertToEventStageDTO(EventBase event, URL baseURL, boolean onRemoteServer, StageEventType stageType) {
|
||||
EventStageDTO dto = new EventStageDTO();
|
||||
mapToMetadataDTO(event, dto);
|
||||
dto.setBaseURL(baseURL.toString());
|
||||
dto.setOnRemoteServer(onRemoteServer);
|
||||
dto.setStageType(stageType);
|
||||
dto.setStageImageURL(HomeServiceUtil.getStageImageURLAsString(event));
|
||||
return dto;
|
||||
}
|
||||
|
||||
private EventListEventDTO convertToEventListDTO(EventBase event, URL baseURL, boolean onRemoteServer) {
|
||||
EventListEventDTO dto = new EventListEventDTO();
|
||||
mapToMetadataDTO(event, dto);
|
||||
dto.setBaseURL(baseURL.toString());
|
||||
dto.setOnRemoteServer(onRemoteServer);
|
||||
return dto;
|
||||
}
|
||||
|
||||
private EventMetadataDTO convertToMetadataDTO(EventBase event) {
|
||||
EventMetadataDTO dto = new EventMetadataDTO();
|
||||
mapToMetadataDTO(event, dto);
|
||||
return dto;
|
||||
}
|
||||
|
||||
private void mapToMetadataDTO(EventBase event, EventMetadataDTO dto) {
|
||||
dto.setId((UUID) event.getId());
|
||||
dto.setDisplayName(event.getName());
|
||||
dto.setStartDate(event.getStartDate().asDate());
|
||||
dto.setEndDate(event.getEndDate().asDate());
|
||||
dto.setState(HomeServiceUtil.calculateEventState(event));
|
||||
dto.setVenue(event.getVenue().getName());
|
||||
if(HomeServiceUtil.isFakeSeries(event)) {
|
||||
dto.setLocation(getLocation(event));
|
||||
}
|
||||
dto.setThumbnailImageURL(HomeServiceUtil.findEventThumbnailImageUrlAsString(event));
|
||||
}
|
||||
|
||||
public String getLocation(EventBase eventBase) {
|
||||
if(!(eventBase instanceof Event)) {
|
||||
return null;
|
||||
}
|
||||
Event event = (Event) eventBase;
|
||||
for (Leaderboard leaderboard : event.getLeaderboardGroups().iterator().next().getLeaderboards()) {
|
||||
if(leaderboard instanceof RegattaLeaderboard) {
|
||||
Regatta regattaEntity = getService().getRegattaByName(leaderboard.getName());
|
||||
if(!HomeServiceUtil.isPartOfEvent(event, regattaEntity)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private ImageDTO convertToImageDTO(ImageDescriptor image) {
|
||||
ImageDTO result = new ImageDTO(image.getURL().toString(), image.getCreatedAtDate() != null ? image.getCreatedAtDate().asDate() : null);
|
||||
result.setCopyright(image.getCopyright());
|
||||
result.setTitle(image.getTitle());
|
||||
result.setSubtitle(image.getSubtitle());
|
||||
result.setMimeType(image.getMimeType());
|
||||
result.setSizeInPx(image.getWidthInPx(), image.getHeightInPx());
|
||||
result.setLocale(image.getLocale() != null ? image.getLocale().toString() : null);
|
||||
List<String> tags = new ArrayList<String>();
|
||||
for(String tag: image.getTags()) {
|
||||
tags.add(tag);
|
||||
}
|
||||
result.setTags(tags);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+105
-186
@@ -1,5 +1,6 @@
|
||||
package com.sap.sailing.gwt.server;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
@@ -8,6 +9,7 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
@@ -19,16 +21,23 @@ import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.HasRegattaMetadata.RegattaState;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventState;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaConstants;
|
||||
import com.sap.sailing.gwt.ui.shared.start.EventStageDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.start.StageEventType;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.media.ImageDescriptor;
|
||||
import com.sap.sse.common.media.MediaDescriptor;
|
||||
import com.sap.sse.common.media.MediaTagConstants;
|
||||
import com.sap.sse.common.media.VideoDescriptor;
|
||||
import com.sap.sse.gwt.client.media.ImageDTO;
|
||||
|
||||
public final class HomeServiceUtil {
|
||||
|
||||
@@ -102,178 +111,16 @@ public final class HomeServiceUtil {
|
||||
}
|
||||
|
||||
private static ImageDescriptor findEventThumbnailImage(EventBase event) {
|
||||
|
||||
final class ImageHolder {
|
||||
|
||||
final int PERFECT_HEIGHT = 240;
|
||||
final int PERFECT_WIDTH = 370;
|
||||
final double PERFECT_RATIO = PERFECT_HEIGHT / (double) PERFECT_WIDTH;
|
||||
final int height;
|
||||
final int width;
|
||||
final int size;
|
||||
final double ratio;
|
||||
final ImageDescriptor image;
|
||||
final boolean stage;
|
||||
|
||||
ImageHolder() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
ImageHolder(ImageDescriptor image) {
|
||||
this.image = image;
|
||||
this.stage = image == null ? false : hasTag(image, MediaTagConstants.STAGE);
|
||||
this.height = image == null || image.getHeightInPx() == null ? 0 : image.getHeightInPx();
|
||||
this.width = image == null || image.getWidthInPx() == null ? 0 : image.getWidthInPx();
|
||||
this.size = height * width;
|
||||
if(width == 0) {
|
||||
this.ratio = -1;
|
||||
} else {
|
||||
this.ratio = height / (double) width;
|
||||
}
|
||||
}
|
||||
|
||||
boolean isBetterWorstcaseThan(ImageHolder otherImageHolder) {
|
||||
if (isNull()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (stage) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (otherImageHolder.isNull()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!isBigEnough() && otherImageHolder.isBigEnough()) {
|
||||
return true;
|
||||
}
|
||||
if (this.fitsRatio() && otherImageHolder.fitsRatio() && otherImageHolder.isBigEnough()
|
||||
&& otherImageHolder.isSmallerThan(this)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isSmallerThan(ImageHolder otherImageHolder) {
|
||||
return size < otherImageHolder.size;
|
||||
}
|
||||
|
||||
boolean isBigEnough() {
|
||||
return height >= PERFECT_HEIGHT && width >= PERFECT_WIDTH;
|
||||
}
|
||||
|
||||
boolean fitsRatio() {
|
||||
return ratio == PERFECT_RATIO;
|
||||
}
|
||||
|
||||
boolean isPerfectFit() {
|
||||
return (height == PERFECT_HEIGHT && width == PERFECT_WIDTH);
|
||||
}
|
||||
|
||||
boolean isNull() {
|
||||
return image == null;
|
||||
}
|
||||
}
|
||||
|
||||
// search for name pattern
|
||||
for (ImageDescriptor imageUrl : event.getImages()) {
|
||||
if (hasTag(imageUrl, MediaTagConstants.TEASER)) {
|
||||
return imageUrl;
|
||||
}
|
||||
}
|
||||
|
||||
ImageHolder actualWorstcase = new ImageHolder();
|
||||
ImageHolder bestFit = new ImageHolder();
|
||||
|
||||
for (ImageDescriptor candidateImage : getPhotoGalleryImages(event)) {
|
||||
ImageHolder candidate = new ImageHolder(candidateImage);
|
||||
|
||||
if (candidate.isPerfectFit()) {
|
||||
return candidate.image;
|
||||
}
|
||||
|
||||
if (candidate.fitsRatio() && candidate.isBigEnough()) {
|
||||
if (candidate.isSmallerThan(bestFit)) {
|
||||
bestFit = candidate;
|
||||
}
|
||||
}
|
||||
|
||||
if (candidate.isBetterWorstcaseThan(actualWorstcase)) {
|
||||
actualWorstcase = candidate;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!bestFit.isNull()) {
|
||||
return bestFit.image;
|
||||
}
|
||||
if (!actualWorstcase.isNull()) {
|
||||
return actualWorstcase.image;
|
||||
}
|
||||
return null;
|
||||
return event.findImageWithTag(MediaTagConstants.TEASER);
|
||||
}
|
||||
|
||||
/**
|
||||
* The stage image is determined from the {@link #images} collection by a series of heuristics and fall-back
|
||||
* rules:
|
||||
* <ol>
|
||||
* <li>If one or more image has {@link MediaConstants#STAGE} tag, only they are considered candidates.</li>
|
||||
* <li>If no image has {@link MediaConstants#STAGE} tag, all images are considered
|
||||
* candidates.</li>
|
||||
* <li>From all candidates, the one with the biggest known size (determined by the product of width and height) is
|
||||
* chosen.</li>
|
||||
* <li>If the size isn't known for any candidate, the first candidate in {@link #imageURLs} is picked.</li>
|
||||
* </ol>
|
||||
*/
|
||||
public static String getStageImageURLAsString(final EventBase event) {
|
||||
ImageDescriptor image = getStageImage(event);
|
||||
return image == null ? null : image.getURL().toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* The stage image is determined from the {@link #images} collection by a series of heuristics and fall-back
|
||||
* rules:
|
||||
* <ol>
|
||||
* <li>If one or more image has {@link MediaConstants#STAGE} tag, only they are considered candidates.</li>
|
||||
* <li>If no image has {@link MediaConstants#STAGE} tag, all images are considered
|
||||
* candidates.</li>
|
||||
* <li>From all candidates, the one with the biggest known size (determined by the product of width and height) is
|
||||
* chosen.</li>
|
||||
* <li>If the size isn't known for any candidate, the first candidate in {@link #imageURLs} is picked.</li>
|
||||
* </ol>
|
||||
*/
|
||||
public static ImageDescriptor getStageImage(final EventBase event) {
|
||||
ImageDescriptor bestMatch = null;
|
||||
|
||||
for(ImageDescriptor candidate : event.getImages()) {
|
||||
if(bestMatch == null || isBetterStageImage(candidate, bestMatch)) {
|
||||
bestMatch = candidate;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
return bestMatch;
|
||||
}
|
||||
|
||||
private static boolean isBetterStageImage(ImageDescriptor candidate, ImageDescriptor reference) {
|
||||
boolean stage = hasTag(candidate, MediaTagConstants.STAGE);
|
||||
boolean stageRef = hasTag(reference, MediaTagConstants.STAGE);
|
||||
if(stage != stageRef) {
|
||||
return stage;
|
||||
}
|
||||
boolean teaser = hasTag(candidate, MediaTagConstants.TEASER);
|
||||
boolean teaserRef = hasTag(reference, MediaTagConstants.TEASER);
|
||||
if(teaser != teaserRef) {
|
||||
return !teaser;
|
||||
}
|
||||
|
||||
int size = candidate.getArea();
|
||||
int sizeRef = candidate.getArea();
|
||||
if(size != sizeRef) {
|
||||
return size > sizeRef;
|
||||
}
|
||||
return candidate.getCreatedAtDate().compareTo(reference.getCreatedAtDate()) > 0;
|
||||
return event.findImageWithTag(MediaTagConstants.STAGE);
|
||||
}
|
||||
|
||||
public static List<String> getPhotoGalleryImageURLsAsString(EventBase event) {
|
||||
@@ -286,22 +133,7 @@ public final class HomeServiceUtil {
|
||||
}
|
||||
|
||||
public static List<ImageDescriptor> getPhotoGalleryImages(EventBase event) {
|
||||
ImageDescriptor stageImage = getStageImage(event); // if set, exclude stage image from photo gallery
|
||||
List<ImageDescriptor> result = new ArrayList<>();
|
||||
Iterable<ImageDescriptor> imageURLs = event.getImages();
|
||||
|
||||
boolean first = true;
|
||||
for (Iterator<ImageDescriptor> iter = imageURLs.iterator(); iter.hasNext(); ) {
|
||||
ImageDescriptor image = iter.next();
|
||||
if(hasTag(image, MediaTagConstants.TEASER)) {
|
||||
continue;
|
||||
}
|
||||
if ((first && !iter.hasNext()) || !Util.equalsWithNull(image, stageImage)) {
|
||||
result.add(image);
|
||||
}
|
||||
first = false;
|
||||
}
|
||||
return result;
|
||||
return event.findImagesWithTag(MediaTagConstants.GALLERY);
|
||||
}
|
||||
|
||||
public static List<ImageDescriptor> getSailingLovesPhotographyImages(EventBase event) {
|
||||
@@ -362,12 +194,7 @@ public final class HomeServiceUtil {
|
||||
}
|
||||
|
||||
public static boolean hasPhotos(Event event) {
|
||||
for(ImageDescriptor image : event.getImages()) {
|
||||
if(!hasTag(image, MediaTagConstants.TEASER)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return event.hasImageWithTag(MediaTagConstants.GALLERY);
|
||||
}
|
||||
|
||||
public static boolean hasVideos(Event event) {
|
||||
@@ -477,6 +304,98 @@ public final class HomeServiceUtil {
|
||||
return LocaleMatch.NO_MATCH;
|
||||
}
|
||||
|
||||
public static EventStageDTO convertToEventStageDTO(EventBase event, URL baseURL, boolean onRemoteServer, StageEventType stageType, RacingEventService service) {
|
||||
EventStageDTO dto = new EventStageDTO();
|
||||
mapToMetadataDTO(event, dto, service);
|
||||
dto.setBaseURL(baseURL.toString());
|
||||
dto.setOnRemoteServer(onRemoteServer);
|
||||
dto.setStageType(stageType);
|
||||
dto.setStageImageURL(HomeServiceUtil.getStageImageURLAsString(event));
|
||||
return dto;
|
||||
}
|
||||
|
||||
public static EventListEventDTO convertToEventListDTO(EventBase event, URL baseURL, boolean onRemoteServer, RacingEventService service) {
|
||||
EventListEventDTO dto = new EventListEventDTO();
|
||||
mapToMetadataDTO(event, dto, service);
|
||||
dto.setBaseURL(baseURL.toString());
|
||||
dto.setOnRemoteServer(onRemoteServer);
|
||||
return dto;
|
||||
}
|
||||
|
||||
public static EventMetadataDTO convertToMetadataDTO(EventBase event, RacingEventService service) {
|
||||
EventMetadataDTO dto = new EventMetadataDTO();
|
||||
mapToMetadataDTO(event, dto, service);
|
||||
return dto;
|
||||
}
|
||||
|
||||
public static void mapToMetadataDTO(EventBase event, EventMetadataDTO dto, RacingEventService service) {
|
||||
dto.setId((UUID) event.getId());
|
||||
dto.setDisplayName(getEventDisplayName(event, service));
|
||||
dto.setStartDate(event.getStartDate().asDate());
|
||||
dto.setEndDate(event.getEndDate().asDate());
|
||||
dto.setState(HomeServiceUtil.calculateEventState(event));
|
||||
dto.setVenue(event.getVenue().getName());
|
||||
if(HomeServiceUtil.isFakeSeries(event)) {
|
||||
dto.setLocation(getLocation(event, service));
|
||||
}
|
||||
dto.setThumbnailImageURL(HomeServiceUtil.findEventThumbnailImageUrlAsString(event));
|
||||
}
|
||||
|
||||
public static String getEventDisplayName(EventBase event, RacingEventService service) {
|
||||
if(isFakeSeries(event)) {
|
||||
String seriesName = getSeriesName(event);
|
||||
if(seriesName != null) {
|
||||
String location = getLocation(event, service);
|
||||
if(location != null) {
|
||||
return seriesName + " - " + location;
|
||||
}
|
||||
}
|
||||
}
|
||||
return event.getName();
|
||||
}
|
||||
|
||||
public static String getSeriesName(EventBase event) {
|
||||
LeaderboardGroupBase overallLeaderboardGroup = event.getLeaderboardGroups().iterator().next();
|
||||
return getLeaderboardDisplayName(overallLeaderboardGroup);
|
||||
}
|
||||
|
||||
public static String getLeaderboardDisplayName(LeaderboardGroupBase overallLeaderboardGroup) {
|
||||
return overallLeaderboardGroup.getDisplayName() != null ? overallLeaderboardGroup.getDisplayName() : overallLeaderboardGroup.getName();
|
||||
}
|
||||
|
||||
public static String getLocation(EventBase eventBase, RacingEventService service) {
|
||||
if(!(eventBase instanceof Event)) {
|
||||
return null;
|
||||
}
|
||||
Event event = (Event) eventBase;
|
||||
for (Leaderboard leaderboard : event.getLeaderboardGroups().iterator().next().getLeaderboards()) {
|
||||
if(leaderboard instanceof RegattaLeaderboard) {
|
||||
Regatta regattaEntity = service.getRegattaByName(leaderboard.getName());
|
||||
if(!HomeServiceUtil.isPartOfEvent(event, regattaEntity)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ImageDTO convertToImageDTO(ImageDescriptor image) {
|
||||
ImageDTO result = new ImageDTO(image.getURL().toString(), image.getCreatedAtDate() != null ? image.getCreatedAtDate().asDate() : null);
|
||||
result.setCopyright(image.getCopyright());
|
||||
result.setTitle(image.getTitle());
|
||||
result.setSubtitle(image.getSubtitle());
|
||||
result.setMimeType(image.getMimeType());
|
||||
result.setSizeInPx(image.getWidthInPx(), image.getHeightInPx());
|
||||
result.setLocale(image.getLocale() != null ? image.getLocale().toString() : null);
|
||||
List<String> tags = new ArrayList<String>();
|
||||
for(String tag: image.getTags()) {
|
||||
tags.add(tag);
|
||||
}
|
||||
result.setTags(tags);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static RegattaMetadataDTO toRegattaMetadataDTO(LeaderboardGroup leaderboardGroup, Leaderboard leaderboard) {
|
||||
RegattaMetadataDTO regattaDTO = new RegattaMetadataDTO(leaderboard.getName(), leaderboard.getName());
|
||||
regattaDTO.setBoatCategory(leaderboardGroup.getDisplayName() != null ? leaderboardGroup.getDisplayName() : leaderboardGroup.getName());
|
||||
|
||||
+1
-4
@@ -4,20 +4,17 @@ import java.util.UUID;
|
||||
|
||||
import com.google.gwt.user.client.rpc.RemoteService;
|
||||
import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.start.StartViewDTO;
|
||||
|
||||
public interface HomeService extends RemoteService {
|
||||
EventViewDTO getEventViewById(UUID id);
|
||||
|
||||
EventSeriesViewDTO getEventSeriesViewById(UUID id);
|
||||
|
||||
MediaDTO getMediaForEvent(UUID eventId);
|
||||
|
||||
MediaDTO getMediaForEventSeries(UUID seriesId);
|
||||
|
||||
|
||||
EventListViewDTO getEventListView() throws Exception;
|
||||
|
||||
StartViewDTO getStartView() throws Exception;
|
||||
|
||||
+1
-4
@@ -4,7 +4,6 @@ import java.util.UUID;
|
||||
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.start.StartViewDTO;
|
||||
@@ -14,10 +13,8 @@ import com.sap.sailing.gwt.ui.shared.start.StartViewDTO;
|
||||
* The async counterpart of {@link HomeService}
|
||||
*/
|
||||
public interface HomeServiceAsync {
|
||||
void getEventViewById(UUID id, AsyncCallback<EventViewDTO> callback);
|
||||
|
||||
void getEventSeriesViewById(UUID id, AsyncCallback<EventSeriesViewDTO> asyncCallback);
|
||||
|
||||
|
||||
void getMediaForEvent(UUID eventId, AsyncCallback<MediaDTO> callback);
|
||||
|
||||
void getMediaForEventSeries(UUID seriesId, AsyncCallback<MediaDTO> callback);
|
||||
|
||||
+3
-2
@@ -1291,6 +1291,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c
|
||||
String raceIsCanceled();
|
||||
String raceIsPostponed();
|
||||
String startingInMinutes(@PluralCount(DefaultRule_0_1_n.class) int minutes);
|
||||
String latestNews();
|
||||
String showCompetitorTimeOnTimeFactorColumn();
|
||||
String showCompetitorTimeOnDistanceAllowanceColumn();
|
||||
String rankingMetric();
|
||||
@@ -1311,8 +1312,8 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c
|
||||
String sailorInfo();
|
||||
String sailorInfoLongText();
|
||||
String resultsQuickfinder();
|
||||
|
||||
String statistics();
|
||||
|
||||
String impressions();
|
||||
String resultsUpdate();
|
||||
String competitorWonRace(String competitorName);
|
||||
}
|
||||
+5
-2
@@ -1255,10 +1255,13 @@ analyseRace=Analyse race
|
||||
nextRaceStartingIn=Next race starts in
|
||||
startingIn={0} starts in
|
||||
raceIsPlanned=Planned
|
||||
raceIsCanceled=Canceled
|
||||
raceIsCanceled=Abandoned
|
||||
raceIsPostponed=Postponed
|
||||
startingInMinutes=Starts in {0,number} min
|
||||
startingInMinutes[none]=Starting now
|
||||
latestNews=Latest News
|
||||
resultsUpdate=Result update
|
||||
competitorWonRace={0} won race
|
||||
showCompetitorTimeOnTimeFactorColumn=Time on Time Factor
|
||||
showCompetitorTimeOnDistanceAllowanceColumn=Time on Distance Allowance
|
||||
rankingMetric=Ranking
|
||||
@@ -1280,4 +1283,4 @@ sailorInfo=Sailor Info
|
||||
sailorInfoLongText=Official Results, Protests,\nNotice Board, Sailor weather:
|
||||
resultsQuickfinder=Results Quickfinder
|
||||
statistics=Statistics
|
||||
impressions=Impressions
|
||||
impressions=Impressions
|
||||
+4
-1
@@ -1249,6 +1249,9 @@ raceIsCanceled=Abgebrochen
|
||||
raceIsPostponed=Verschoben
|
||||
startingInMinutes=Startet in {0,number} min
|
||||
startingInMinutes[none]=Startet gleich
|
||||
latestNews=Neuigkeiten
|
||||
resultsUpdate=Neue Ergebnisse
|
||||
competitorWonRace={0} gewann die Wettfahrt
|
||||
showCompetitorTimeOnTimeFactorColumn=Zeit-für-Zeit Faktor
|
||||
showCompetitorTimeOnDistanceAllowanceColumn=Zeit-für-Distanz Gutschrift
|
||||
rankingMetric=Wertung/Handicap
|
||||
@@ -1270,4 +1273,4 @@ sailorInfo=Segler Infos
|
||||
sailorInfoLongText=Offizielle Ergebnisse, Proteste,\nNotice Board, Segler-Wetter:
|
||||
resultsQuickfinder=Ergebnis Schnellauswahl
|
||||
statistics=Statistiken
|
||||
impressions=Eindrücke
|
||||
impressions=Eindrücke
|
||||
+4
-1
@@ -1197,6 +1197,9 @@ raceIsCanceled=Canceled
|
||||
raceIsPostponed=Postponed
|
||||
startingInMinutes=Starts in {0,number} min
|
||||
startingInMinutes[none]=Starting now
|
||||
latestNews=Последние Новости
|
||||
resultsUpdate=Результаты обновление
|
||||
competitorWonRace={0} won race
|
||||
showCompetitorTimeOnTimeFactorColumn=Time on Time Factor
|
||||
showCompetitorTimeOnDistanceAllowanceColumn=Time on Distance Allowance
|
||||
rankingMetric=Ranking
|
||||
@@ -1218,4 +1221,4 @@ sailorInfo=Моряки информация
|
||||
sailorInfoLongText=Official Results, Protests,\nNotice Board, Sailor weather:
|
||||
resultsQuickfinder=Results Quickfinder
|
||||
statistics=Statistics
|
||||
impressions=Impressions
|
||||
impressions=Impressions
|
||||
+4
-1
@@ -1249,6 +1249,9 @@ raceIsCanceled=Canceled
|
||||
raceIsPostponed=Postponed
|
||||
startingInMinutes=Starts in {0,number} min
|
||||
startingInMinutes[none]=Starting now
|
||||
latestNews=最新消息
|
||||
resultsUpdate=結果更新
|
||||
competitorWonRace={0} won race
|
||||
showCompetitorTimeOnTimeFactorColumn=Time on Time Factor
|
||||
showCompetitorTimeOnDistanceAllowanceColumn=Time on Distance Allowance
|
||||
rankingMetric=Ranking
|
||||
@@ -1270,4 +1273,4 @@ sailorInfo=水手信息
|
||||
sailorInfoLongText=Find here Notice Board,\nProtests, Sailor weather:
|
||||
resultsQuickfinder=Results Quickfinder
|
||||
statistics=Statistics
|
||||
impressions=Impressions
|
||||
impressions=Impressions
|
||||
+4
-1
@@ -12,6 +12,7 @@ import com.sap.sailing.gwt.ui.shared.dispatch.RequestWrapper;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.Result;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.ResultWrapper;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.rpc.DispatchRPC;
|
||||
import com.sap.sailing.news.EventNewsService;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sse.util.ServiceTrackerFactory;
|
||||
|
||||
@@ -19,16 +20,18 @@ public class DispatchRPCImpl extends ProxiedRemoteServiceServlet implements Disp
|
||||
private static final long serialVersionUID = -245230476512348999L;
|
||||
|
||||
private final ServiceTracker<RacingEventService, RacingEventService> racingEventServiceTracker;
|
||||
private final ServiceTracker<EventNewsService, EventNewsService> eventNewsServiceTracker;
|
||||
|
||||
public DispatchRPCImpl() {
|
||||
final BundleContext context = Activator.getDefault();
|
||||
|
||||
racingEventServiceTracker = ServiceTrackerFactory.createAndOpen(context, RacingEventService.class);
|
||||
eventNewsServiceTracker = ServiceTrackerFactory.createAndOpen(context, EventNewsService.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R extends Result, A extends Action<R>> ResultWrapper<R> execute(RequestWrapper<R, A> request) throws DispatchException {
|
||||
R executionResult = request.getAction().execute(new DispatchContextImpl(request.getCurrentClientTime(), racingEventServiceTracker.getService(), request.getClientLocaleName()));
|
||||
R executionResult = request.getAction().execute(new DispatchContextImpl(request.getCurrentClientTime(), racingEventServiceTracker.getService(), eventNewsServiceTracker.getService(), request.getClientLocaleName()));
|
||||
return new ResultWrapper<R>(executionResult);
|
||||
}
|
||||
|
||||
|
||||
+3
@@ -3,12 +3,15 @@ package com.sap.sailing.gwt.ui.shared.dispatch;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
import com.sap.sailing.news.EventNewsService;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
|
||||
|
||||
public interface DispatchContext {
|
||||
|
||||
RacingEventService getRacingEventService();
|
||||
|
||||
EventNewsService getEventNewsService();
|
||||
|
||||
String getClientLocaleName();
|
||||
|
||||
|
||||
+8
-1
@@ -3,18 +3,21 @@ package com.sap.sailing.gwt.ui.shared.dispatch;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
import com.sap.sailing.news.EventNewsService;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
|
||||
|
||||
public class DispatchContextImpl implements DispatchContext {
|
||||
private final RacingEventService racingEventService;
|
||||
private final EventNewsService eventNewsService;
|
||||
private final Date currentClientTime;
|
||||
// private final Date currentServerTime = new Date();
|
||||
private String clientLocaleName;
|
||||
|
||||
public DispatchContextImpl(Date currentClientTime, RacingEventService racingEventService, String clientLocaleName) {
|
||||
public DispatchContextImpl(Date currentClientTime, RacingEventService racingEventService, EventNewsService eventNewsService, String clientLocaleName) {
|
||||
this.currentClientTime = currentClientTime;
|
||||
this.racingEventService = racingEventService;
|
||||
this.eventNewsService = eventNewsService;
|
||||
this.clientLocaleName = clientLocaleName;
|
||||
}
|
||||
|
||||
@@ -23,6 +26,10 @@ public class DispatchContextImpl implements DispatchContext {
|
||||
return racingEventService;
|
||||
}
|
||||
|
||||
public EventNewsService getEventNewsService() {
|
||||
return eventNewsService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getCurrentClientTime() {
|
||||
return currentClientTime;
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ListResult<T extends DTO> implements DTO, Result {
|
||||
private ArrayList<T> values = new ArrayList<>();
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private ListResult() {
|
||||
}
|
||||
|
||||
public ListResult(List<T> values) {
|
||||
super();
|
||||
this.values.addAll(values);
|
||||
}
|
||||
|
||||
public List<T> getValues() {
|
||||
return values;
|
||||
}
|
||||
}
|
||||
-2
@@ -7,8 +7,6 @@ public class EventOverviewStageDTO implements DTO {
|
||||
private String eventMessage;
|
||||
private EventOverviewStageContentDTO stageContent;
|
||||
|
||||
// TODO news
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private EventOverviewStageDTO() {
|
||||
}
|
||||
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.event;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.Action;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.ListResult;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.news.InfoNewsEntryDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.news.LeaderboardNewsEntryDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO;
|
||||
import com.sap.sailing.news.EventNewsItem;
|
||||
import com.sap.sailing.news.impl.InfoEventNewsItem;
|
||||
import com.sap.sailing.news.impl.LeaderboardUpdateNewsItem;
|
||||
|
||||
public class GetEventOverviewNewsAction implements Action<ResultWithTTL<ListResult<NewsEntryDTO>>> {
|
||||
private UUID eventId;
|
||||
|
||||
public GetEventOverviewNewsAction() {
|
||||
}
|
||||
|
||||
public GetEventOverviewNewsAction(UUID eventId) {
|
||||
this.eventId = eventId;
|
||||
}
|
||||
|
||||
@Override
|
||||
@GwtIncompatible
|
||||
public ResultWithTTL<ListResult<NewsEntryDTO>> execute(DispatchContext context) {
|
||||
Event event = context.getRacingEventService().getEvent(eventId);
|
||||
long ttl = 1000 * 60 * 2;
|
||||
return new ResultWithTTL<>(ttl, new ListResult<NewsEntryDTO>(getNews(context, event)));
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
private List<NewsEntryDTO> getNews(DispatchContext dispatchContext, Event event) {
|
||||
List<EventNewsItem> newsItems = dispatchContext.getEventNewsService().getNews(event);
|
||||
|
||||
List<NewsEntryDTO> news = new ArrayList<>(newsItems.size());
|
||||
for(EventNewsItem newsItem: newsItems) {
|
||||
if(newsItem instanceof InfoEventNewsItem) {
|
||||
news.add(new InfoNewsEntryDTO((InfoEventNewsItem) newsItem, dispatchContext.getClientLocale()));
|
||||
}
|
||||
if(newsItem instanceof LeaderboardUpdateNewsItem) {
|
||||
news.add(new LeaderboardNewsEntryDTO((LeaderboardUpdateNewsItem) newsItem));
|
||||
}
|
||||
}
|
||||
return news;
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -43,7 +43,8 @@ public class GetEventOverviewStageAction implements Action<ResultWithTTL<EventOv
|
||||
}
|
||||
|
||||
// TODO get correct message
|
||||
return new ResultWithTTL<>(ttl, new EventOverviewStageDTO(null, getStageContent(context, event, state, now)));
|
||||
EventOverviewStageDTO stage = new EventOverviewStageDTO(null, getStageContent(context, event, state, now));
|
||||
return new ResultWithTTL<>(ttl, stage);
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.event;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.gwt.server.HomeServiceUtil;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.Action;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventState;
|
||||
import com.sap.sse.common.media.ImageDescriptor;
|
||||
import com.sap.sse.common.media.MediaTagConstants;
|
||||
|
||||
public class GetEventViewAction implements Action<EventViewDTO> {
|
||||
private UUID eventId;
|
||||
|
||||
public GetEventViewAction() {
|
||||
}
|
||||
|
||||
public GetEventViewAction(UUID eventId) {
|
||||
this.eventId = eventId;
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public EventViewDTO execute(DispatchContext context) {
|
||||
Event event = context.getRacingEventService().getEvent(eventId);
|
||||
if (event == null) {
|
||||
throw new RuntimeException("Event not found");
|
||||
}
|
||||
|
||||
EventViewDTO dto = new EventViewDTO();
|
||||
HomeServiceUtil.mapToMetadataDTO(event, dto, context.getRacingEventService());
|
||||
|
||||
ImageDescriptor logoImage = event.findImageWithTag(MediaTagConstants.LOGO);
|
||||
dto.setLogoImage(logoImage != null ? HomeServiceUtil.convertToImageDTO(logoImage) : null);
|
||||
dto.setOfficialWebsiteURL(event.getOfficialWebsiteURL() == null ? null : event.getOfficialWebsiteURL().toString());
|
||||
|
||||
dto.setHasMedia(HomeServiceUtil.hasMedia(event));
|
||||
dto.setState(HomeServiceUtil.calculateEventState(event));
|
||||
dto.setHasAnalytics(EventState.RUNNING.compareTo(dto.getState()) <= 0);
|
||||
|
||||
boolean isFakeSeries = HomeServiceUtil.isFakeSeries(event);
|
||||
|
||||
for (LeaderboardGroup leaderboardGroup : event.getLeaderboardGroups()) {
|
||||
for (Leaderboard leaderboard : leaderboardGroup.getLeaderboards()) {
|
||||
if(leaderboard instanceof RegattaLeaderboard) {
|
||||
Regatta regatta = context.getRacingEventService().getRegattaByName(leaderboard.getName());
|
||||
if(isFakeSeries && !HomeServiceUtil.isPartOfEvent(event, regatta)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
RegattaMetadataDTO regattaDTO = HomeServiceUtil.toRegattaMetadataDTO(leaderboardGroup, leaderboard);
|
||||
regattaDTO.setStartDate(regatta.getStartDate() != null ? regatta.getStartDate().asDate() : null);
|
||||
regattaDTO.setEndDate(regatta.getEndDate() != null ? regatta.getEndDate().asDate() : null);
|
||||
regattaDTO.setState(HomeServiceUtil.calculateRegattaState(regattaDTO));
|
||||
dto.getRegattas().add(regattaDTO);
|
||||
|
||||
} else if(leaderboard instanceof FlexibleLeaderboard) {
|
||||
RegattaMetadataDTO regattaDTO = HomeServiceUtil.toRegattaMetadataDTO(leaderboardGroup, leaderboard);
|
||||
|
||||
regattaDTO.setStartDate(null);
|
||||
regattaDTO.setEndDate(null);
|
||||
regattaDTO.setState(HomeServiceUtil.calculateRegattaState(regattaDTO));
|
||||
dto.getRegattas().add(regattaDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isFakeSeries) {
|
||||
dto.setType(EventType.SERIES_EVENT);
|
||||
|
||||
LeaderboardGroup overallLeaderboardGroup = event.getLeaderboardGroups().iterator().next();
|
||||
dto.setSeriesName(HomeServiceUtil.getLeaderboardDisplayName(overallLeaderboardGroup));
|
||||
List<Event> fakeSeriesEvents = new ArrayList<Event>();
|
||||
|
||||
for (Event eventOfSeries : context.getRacingEventService().getAllEvents()) {
|
||||
for (LeaderboardGroup leaderboardGroup : eventOfSeries.getLeaderboardGroups()) {
|
||||
if (overallLeaderboardGroup.equals(leaderboardGroup)) {
|
||||
fakeSeriesEvents.add(eventOfSeries);
|
||||
}
|
||||
}
|
||||
}
|
||||
Collections.sort(fakeSeriesEvents, new Comparator<Event>() {
|
||||
public int compare(Event e1, Event e2) {
|
||||
return e1.getStartDate().compareTo(e2.getEndDate());
|
||||
}
|
||||
});
|
||||
for(Event eventInSeries: fakeSeriesEvents) {
|
||||
String displayName = HomeServiceUtil.getLocation(eventInSeries, context.getRacingEventService());
|
||||
if(displayName == null) {
|
||||
displayName = eventInSeries.getName();
|
||||
}
|
||||
dto.getEventsOfSeries().add(new EventReferenceDTO(eventInSeries.getId(), displayName));
|
||||
}
|
||||
} else {
|
||||
dto.setType(dto.getRegattas().size() == 1 ? EventType.SINGLE_REGATTA: EventType.MULTI_REGATTA);
|
||||
}
|
||||
|
||||
// Special solution for Kieler Woche 2015
|
||||
if("a9d6c5d5-cac3-47f2-9b5c-506e441819a1".equals(event.getId().toString())) {
|
||||
dto.setSailorsInfoURL(Locale.GERMAN.equals(context.getClientLocale()) ? "http://sailorsinfo.kieler-woche.de/" : "http://sailorsinfo.kieler-woche.de/en");
|
||||
}
|
||||
|
||||
return dto;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -23,7 +23,7 @@ final class LiveRaceCalculator implements RaceCallback {
|
||||
} else if(race.getViewState() == RaceViewState.SCHEDULED) {
|
||||
int timeTillRace = (int) MillisecondsTimePoint.now().until(new MillisecondsTimePoint(race.getStart())).asMillis();
|
||||
ttl = Math.min(ttl, Math.min(1000 * 60, timeTillRace));
|
||||
} else if(race.getViewState() == RaceViewState.POSTPONED || race.getViewState() == RaceViewState.CANCELED) {
|
||||
} else if(race.getViewState() == RaceViewState.POSTPONED || race.getViewState() == RaceViewState.ABANDONED) {
|
||||
ttl = Math.min(ttl, 1000 * 60);
|
||||
}
|
||||
}
|
||||
|
||||
+44
-29
@@ -129,7 +129,7 @@ public class RaceContext {
|
||||
|
||||
private FlagStateDTO getFlagStateOrNull() {
|
||||
// Code extracted from SailingServiceImpl.createRaceInfoDTO
|
||||
// TODO extract to to util to be used from both places
|
||||
// TODO: extract to to util to be used from both places
|
||||
TimePoint startTime = state.getStartTime();
|
||||
|
||||
Flags lastUpperFlag = null;
|
||||
@@ -153,30 +153,34 @@ public class RaceContext {
|
||||
}
|
||||
}
|
||||
|
||||
RaceLogRaceStatus lastStatus = state.getStatus();
|
||||
|
||||
AbortingFlagFinder abortingFlagFinder = new AbortingFlagFinder(raceLog);
|
||||
|
||||
RaceLogFlagEvent abortingFlagEvent = abortingFlagFinder.analyze();
|
||||
if (abortingFlagEvent != null) {
|
||||
if (lastStatus == RaceLogRaceStatus.UNSCHEDULED) {
|
||||
lastUpperFlag = abortingFlagEvent.getUpperFlag();
|
||||
lastLowerFlag = abortingFlagEvent.getLowerFlag();
|
||||
lastFlagsAreDisplayed = abortingFlagEvent.isDisplayed();
|
||||
lastFlagsDisplayedStateChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (lastStatus == RaceLogRaceStatus.FINISHED) {
|
||||
TimePoint protestStartTime = state.getProtestTime();
|
||||
if (protestStartTime != null) {
|
||||
lastUpperFlag = Flags.BRAVO;
|
||||
lastLowerFlag = Flags.NONE;
|
||||
lastFlagsAreDisplayed = true;
|
||||
lastFlagsDisplayedStateChanged = true;
|
||||
}
|
||||
}
|
||||
switch(state.getStatus()) {
|
||||
case FINISHED:
|
||||
TimePoint protestStartTime = state.getProtestTime();
|
||||
if (protestStartTime != null) {
|
||||
lastUpperFlag = Flags.BRAVO;
|
||||
lastLowerFlag = Flags.NONE;
|
||||
lastFlagsAreDisplayed = true;
|
||||
lastFlagsDisplayedStateChanged = true;
|
||||
}
|
||||
break;
|
||||
case UNSCHEDULED:
|
||||
// search for race aborting in last pass
|
||||
AbortingFlagFinder abortingFlagFinder = new AbortingFlagFinder(raceLog);
|
||||
RaceLogFlagEvent abortingFlagEvent = abortingFlagFinder.analyze();
|
||||
if (abortingFlagEvent != null) {
|
||||
lastUpperFlag = abortingFlagEvent.getUpperFlag();
|
||||
lastLowerFlag = abortingFlagEvent.getLowerFlag();
|
||||
lastFlagsAreDisplayed = abortingFlagEvent.isDisplayed();
|
||||
lastFlagsDisplayedStateChanged = true;
|
||||
}
|
||||
break;
|
||||
case FINISHING:
|
||||
case RUNNING:
|
||||
case SCHEDULED:
|
||||
case STARTPHASE:
|
||||
case UNKNOWN:
|
||||
break;
|
||||
};
|
||||
|
||||
if(lastUpperFlag != null || lastLowerFlag != null) {
|
||||
return new FlagStateDTO(lastUpperFlag, lastLowerFlag, lastFlagsAreDisplayed, lastFlagsDisplayedStateChanged);
|
||||
@@ -289,7 +293,7 @@ public class RaceContext {
|
||||
if(isLiveOrOfPublicInterest(startTime, finishTime)) {
|
||||
// the start time is always given for live races
|
||||
LiveRaceDTO liveRaceDTO = new LiveRaceDTO(getRegattaName(), raceColumn.getName());
|
||||
liveRaceDTO.setViewState(getRaceViewState(startTime, finishTime));
|
||||
liveRaceDTO.setViewState(getLiveRaceViewState(startTime, finishTime));
|
||||
liveRaceDTO.setRegattaDisplayName(getRegattaDisplayName());
|
||||
liveRaceDTO.setTrackedRaceName(trackedRace != null ? trackedRace.getRaceIdentifier().getRaceName() : null);
|
||||
liveRaceDTO.setTrackingState(getRaceTrackingState());
|
||||
@@ -348,14 +352,25 @@ public class RaceContext {
|
||||
return trackingState;
|
||||
}
|
||||
|
||||
private RaceViewState getRaceViewState(TimePoint startTime, TimePoint finishTime) {
|
||||
private RaceViewState getLiveRaceViewState(TimePoint startTime, TimePoint finishTime) {
|
||||
RaceViewState raceState = RaceViewState.RUNNING;
|
||||
if (startTime != null && now.before(startTime)) {
|
||||
raceState = RaceViewState.SCHEDULED;
|
||||
} else if (finishTime != null && now.after(finishTime)) {
|
||||
raceState = RaceViewState.FINISHED;
|
||||
} else {
|
||||
// TODO: Resolve ABORTED and POSTPONED states
|
||||
} else if(raceLog != null) {
|
||||
AbortingFlagFinder abortingFlagFinder = new AbortingFlagFinder(raceLog);
|
||||
RaceLogFlagEvent abortingFlagEvent = abortingFlagFinder.analyze();
|
||||
if (abortingFlagEvent != null) {
|
||||
Flags upperFlag = abortingFlagEvent.getUpperFlag();
|
||||
if(upperFlag.equals(Flags.AP)) {
|
||||
raceState = RaceViewState.POSTPONED;
|
||||
} else if(upperFlag.equals(Flags.NOVEMBER)) {
|
||||
raceState = RaceViewState.ABANDONED;
|
||||
} else if(upperFlag.equals(Flags.FIRSTSUBSTITUTE)) {
|
||||
raceState = RaceViewState.ABANDONED;
|
||||
}
|
||||
}
|
||||
}
|
||||
return raceState;
|
||||
}
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.news;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
|
||||
public abstract class AbstractRaceNewsEntryDTO extends NewsEntryDTO {
|
||||
|
||||
private String regattaName;
|
||||
private String trackedRaceName;
|
||||
private String boatClass;
|
||||
|
||||
protected AbstractRaceNewsEntryDTO() {
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public AbstractRaceNewsEntryDTO(String regattaName, String trackedRaceName, String raceTitle, String boatClass, Date timestamp) {
|
||||
super(raceTitle, timestamp, null);
|
||||
this.regattaName = regattaName;
|
||||
this.trackedRaceName = trackedRaceName;
|
||||
this.boatClass = boatClass;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBoatClass() {
|
||||
return boatClass;
|
||||
}
|
||||
|
||||
public String getRegattaName() {
|
||||
return regattaName;
|
||||
}
|
||||
|
||||
public void setRegattaName(String regattaName) {
|
||||
this.regattaName = regattaName;
|
||||
}
|
||||
|
||||
public String getTrackedRaceName() {
|
||||
return trackedRaceName;
|
||||
}
|
||||
|
||||
public void setTrackedRaceName(String trackedRaceName) {
|
||||
this.trackedRaceName = trackedRaceName;
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.news;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.news.impl.InfoEventNewsItem;
|
||||
|
||||
public class InfoNewsEntryDTO extends NewsEntryDTO {
|
||||
|
||||
private String subtitle;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private InfoNewsEntryDTO() {
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public InfoNewsEntryDTO(InfoEventNewsItem item, Locale locale) {
|
||||
super(item.getTitle(locale), item.getCreatedAtDate(), item.getRelatedItemLink());
|
||||
this.subtitle = item.getMessage(locale);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return subtitle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBoatClass() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.news;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.news.impl.LeaderboardUpdateNewsItem;
|
||||
|
||||
public class LeaderboardNewsEntryDTO extends NewsEntryDTO {
|
||||
|
||||
public enum Type {
|
||||
RESULTS_UPDATE
|
||||
}
|
||||
|
||||
private String leaderboardName;
|
||||
private String boatClassName;
|
||||
private Type type;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private LeaderboardNewsEntryDTO() {
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public LeaderboardNewsEntryDTO(LeaderboardUpdateNewsItem item) {
|
||||
super(item.getTitle(), item.getCreatedAtDate(), null);
|
||||
this.boatClassName = item.getBoatClass();
|
||||
this.type = Type.RESULTS_UPDATE;
|
||||
this.leaderboardName = item.getLeaderboardName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBoatClass() {
|
||||
return boatClassName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
switch (type) {
|
||||
case RESULTS_UPDATE:
|
||||
return StringMessages.INSTANCE.resultsUpdate();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public String getLeaderboardName() {
|
||||
return leaderboardName;
|
||||
}
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.news;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Date;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DTO;
|
||||
|
||||
public abstract class NewsEntryDTO implements DTO {
|
||||
|
||||
private Date timestamp;
|
||||
|
||||
private String title;
|
||||
|
||||
private String externalURL;
|
||||
|
||||
protected NewsEntryDTO() {
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public NewsEntryDTO(String title, Date timestamp, URL externalURL) {
|
||||
this(title, timestamp, externalURL == null ? null : externalURL.toString());
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
private NewsEntryDTO(String title, Date timestamp, String externalURL) {
|
||||
this.title = title;
|
||||
this.timestamp = timestamp;
|
||||
this.externalURL = externalURL;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public abstract String getMessage();
|
||||
|
||||
public abstract String getBoatClass();
|
||||
|
||||
public Date getTimestamp() {
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
public String getExternalURL() {
|
||||
return externalURL;
|
||||
}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.news;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
|
||||
public class RaceCompetitorNewsEntryDTO extends AbstractRaceNewsEntryDTO {
|
||||
|
||||
public enum Type {
|
||||
WINNER
|
||||
}
|
||||
|
||||
private String competitorName;
|
||||
private Type type;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private RaceCompetitorNewsEntryDTO() {
|
||||
}
|
||||
|
||||
public RaceCompetitorNewsEntryDTO(String regattaName, String trackedRaceName, String raceTitle, String boatClass, Date timestamp, String competitorName, Type type) {
|
||||
super(regattaName, trackedRaceName, raceTitle, boatClass, timestamp);
|
||||
this.competitorName = competitorName;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
switch (type) {
|
||||
case WINNER:
|
||||
return StringMessages.INSTANCE.competitorWonRace(competitorName);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -3,11 +3,12 @@ package com.sap.sailing.gwt.ui.shared.eventview;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.Result;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
|
||||
import com.sap.sse.gwt.client.media.ImageDTO;
|
||||
|
||||
public class EventViewDTO extends EventMetadataDTO {
|
||||
public class EventViewDTO extends EventMetadataDTO implements Result {
|
||||
|
||||
public enum EventType {
|
||||
SINGLE_REGATTA, MULTI_REGATTA, SERIES_EVENT
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ public class RaceMetadataDTO implements IsSerializable {
|
||||
return StringMessages.INSTANCE.raceIsPostponed();
|
||||
}
|
||||
},
|
||||
CANCELED { // the running racing has been canceled
|
||||
ABANDONED { // the running racing has been abandoned
|
||||
@Override
|
||||
public String getLabel() {
|
||||
return StringMessages.INSTANCE.raceIsCanceled();
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
@@ -0,0 +1 @@
|
||||
bin/
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.sap.sailing.news</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -0,0 +1,7 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
||||
@@ -0,0 +1,3 @@
|
||||
eclipse.preferences.version=1
|
||||
pluginProject.extensions=false
|
||||
resolve.requirebundle=false
|
||||
@@ -0,0 +1,19 @@
|
||||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Shared sailing news APIs
|
||||
Bundle-SymbolicName: com.sap.sailing.news
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Activator: com.sap.sailing.news.Activator
|
||||
Bundle-Vendor: SAP
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Export-Package: com.sap.sailing.news,
|
||||
com.sap.sailing.news.impl
|
||||
Import-Package: org.json.simple,
|
||||
org.json.simple.parser,
|
||||
org.osgi.framework;version="1.5.0",
|
||||
org.osgi.util.tracker;version="1.5.1"
|
||||
Require-Bundle: com.sap.sse.common,
|
||||
com.sap.sailing.server,
|
||||
com.sap.sailing.domain,
|
||||
com.sap.sailing.domain.common
|
||||
@@ -0,0 +1,4 @@
|
||||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<artifactId>root</artifactId>
|
||||
<groupId>com.sap.sailing</groupId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>com.sap.sailing.news</artifactId>
|
||||
<packaging>eclipse-plugin</packaging>
|
||||
</project>
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.sap.sailing.news;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
import com.sap.sailing.news.impl.EventNewsProviderRegistryImpl;
|
||||
import com.sap.sailing.news.impl.EventNewsServiceImpl;
|
||||
import com.sap.sailing.news.impl.LeaderboardUpdateEventNewsProvider;
|
||||
|
||||
public class Activator implements BundleActivator {
|
||||
private static final Logger logger = Logger.getLogger(Activator.class.getName());
|
||||
|
||||
public void start(BundleContext context) throws Exception {
|
||||
EventNewsProviderRegistry providerRegistry = new EventNewsProviderRegistryImpl();
|
||||
EventNewsService newsService = new EventNewsServiceImpl(providerRegistry);
|
||||
context.registerService(EventNewsService.class, newsService, null);
|
||||
context.registerService(EventNewsProviderRegistry.class, providerRegistry, null);
|
||||
|
||||
// The json event news provider is only a fallback and should not be activated per default
|
||||
// providerRegistry.registerNewsProvider(new JsonEventNewsProvider());
|
||||
providerRegistry.registerNewsProvider(new LeaderboardUpdateEventNewsProvider());
|
||||
logger.info("EventNews Service registered.");
|
||||
}
|
||||
|
||||
public void stop(BundleContext bundleContext) throws Exception {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.sap.sailing.news;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* An interface for event related news item
|
||||
* @author Frank
|
||||
*
|
||||
*/
|
||||
public interface EventNewsItem extends NewsItem {
|
||||
UUID getEventUUID();
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.sap.sailing.news;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
|
||||
public interface EventNewsProvider {
|
||||
Collection<? extends EventNewsItem> getNews(Event event);
|
||||
|
||||
Collection<? extends EventNewsItem> getNews(Event event, Date startingFrom);
|
||||
|
||||
boolean hasNews(Event event, Date startingFrom);
|
||||
|
||||
boolean hasNews(Event event);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.sap.sailing.news;
|
||||
|
||||
public interface EventNewsProviderRegistry {
|
||||
boolean registerNewsProvider(EventNewsProvider provider);
|
||||
|
||||
boolean deregisterNewsProvider(EventNewsProvider provider);
|
||||
|
||||
Iterable<EventNewsProvider> getEventNewsProvider();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.sap.sailing.news;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
|
||||
public interface EventNewsService {
|
||||
List<EventNewsItem> getNews(Event event);
|
||||
|
||||
List<EventNewsItem> getNews(Event event, Date startingFrom);
|
||||
|
||||
List<EventNewsItem> getNewsByCategory(Event event, String category);
|
||||
|
||||
List<EventNewsItem> getNewsByCategory(Event event, Date startingFrom, String category);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.sap.sailing.news;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
||||
public class LimitedQueue<E> extends LinkedList<E> {
|
||||
private static final long serialVersionUID = 9026209104040359183L;
|
||||
private int limit;
|
||||
|
||||
public LimitedQueue(int limit) {
|
||||
this.limit = limit;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean add(E o) {
|
||||
boolean added = super.add(o);
|
||||
while (added && size() > limit) {
|
||||
super.remove();
|
||||
}
|
||||
return added;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.sap.sailing.news;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* An interface for a generic news item
|
||||
* @author Frank
|
||||
*
|
||||
*/
|
||||
public interface NewsItem extends Comparable<NewsItem> {
|
||||
UUID getId();
|
||||
|
||||
String getCategory();
|
||||
|
||||
String getTitle();
|
||||
|
||||
String getMessage();
|
||||
|
||||
URL getRelatedItemLink();
|
||||
|
||||
Date getCreatedAtDate();
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.sap.sailing.news.impl;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.sap.sailing.news.EventNewsItem;
|
||||
|
||||
public abstract class AbstractEventNewsItem extends AbstractNewsItem implements EventNewsItem {
|
||||
private UUID eventId;
|
||||
|
||||
public AbstractEventNewsItem(UUID eventId, String title, String message, Date createdAtDate, String category, URL relatedItemLink) {
|
||||
super(title, message, createdAtDate, category, relatedItemLink);
|
||||
this.eventId = eventId;
|
||||
}
|
||||
|
||||
public AbstractEventNewsItem(UUID eventId, String title, String message, Date createdAtDate, String category) {
|
||||
super(title, message, createdAtDate, category);
|
||||
this.eventId = eventId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID getEventUUID() {
|
||||
return eventId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.sap.sailing.news.impl;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.sap.sailing.news.NewsItem;
|
||||
|
||||
public class AbstractNewsItem implements NewsItem {
|
||||
private final UUID id;
|
||||
|
||||
private String category;
|
||||
|
||||
private String title;
|
||||
|
||||
private String message;
|
||||
|
||||
private URL relatedItemLink;
|
||||
|
||||
private Date createdAtDate;
|
||||
|
||||
public AbstractNewsItem(String title, String message, Date createdAtDate, String category) {
|
||||
this(title, message, createdAtDate, category, null);
|
||||
}
|
||||
|
||||
public AbstractNewsItem(String title, String message, Date createdAtDate, String category, URL relatedItemLink) {
|
||||
this.title = title;
|
||||
this.message = message;
|
||||
this.category = category;
|
||||
this.createdAtDate = createdAtDate;
|
||||
this.relatedItemLink = relatedItemLink;
|
||||
this.id = UUID.randomUUID();
|
||||
}
|
||||
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public URL getRelatedItemLink() {
|
||||
return relatedItemLink;
|
||||
}
|
||||
|
||||
public Date getCreatedAtDate() {
|
||||
return createdAtDate;
|
||||
}
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(NewsItem o) {
|
||||
Date otherCreatedAtDate = o.getCreatedAtDate();
|
||||
if(createdAtDate == otherCreatedAtDate) {
|
||||
return 0;
|
||||
}
|
||||
if(createdAtDate == null) {
|
||||
return 1;
|
||||
}
|
||||
if(otherCreatedAtDate == null) {
|
||||
return -1;
|
||||
}
|
||||
return -createdAtDate.compareTo(otherCreatedAtDate);
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
package com.sap.sailing.news.impl;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.sap.sailing.news.EventNewsProvider;
|
||||
import com.sap.sailing.news.EventNewsProviderRegistry;
|
||||
|
||||
public class EventNewsProviderRegistryImpl implements EventNewsProviderRegistry {
|
||||
private Set<EventNewsProvider> newsProvider;
|
||||
|
||||
public EventNewsProviderRegistryImpl() {
|
||||
newsProvider = new HashSet<EventNewsProvider>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean registerNewsProvider(EventNewsProvider provider) {
|
||||
return newsProvider.add(provider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deregisterNewsProvider(EventNewsProvider provider) {
|
||||
return newsProvider.remove(provider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<EventNewsProvider> getEventNewsProvider() {
|
||||
return newsProvider;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.sap.sailing.news.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.news.EventNewsItem;
|
||||
import com.sap.sailing.news.EventNewsProvider;
|
||||
import com.sap.sailing.news.EventNewsProviderRegistry;
|
||||
import com.sap.sailing.news.EventNewsService;
|
||||
|
||||
public class EventNewsServiceImpl implements EventNewsService {
|
||||
private final EventNewsProviderRegistry providerRegistry;
|
||||
|
||||
public EventNewsServiceImpl(EventNewsProviderRegistry providerRegistry) {
|
||||
this.providerRegistry = providerRegistry;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EventNewsItem> getNews(Event event) {
|
||||
List<EventNewsItem> result = new ArrayList<>();
|
||||
for(EventNewsProvider provider: providerRegistry.getEventNewsProvider()) {
|
||||
Collection<? extends EventNewsItem> news = provider.getNews(event);
|
||||
result.addAll(news);
|
||||
}
|
||||
Collections.sort(result);
|
||||
if(result.size() <= 15) {
|
||||
return result;
|
||||
}
|
||||
return result.subList(0, 16);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EventNewsItem> getNews(Event event, Date startingFrom) {
|
||||
List<EventNewsItem> result = new ArrayList<>();
|
||||
for(EventNewsProvider provider: providerRegistry.getEventNewsProvider()) {
|
||||
Collection<? extends EventNewsItem> news = provider.getNews(event, startingFrom);
|
||||
result.addAll(news);
|
||||
}
|
||||
Collections.sort(result);
|
||||
if(result.size() <= 15) {
|
||||
return result;
|
||||
}
|
||||
return result.subList(0, 16);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EventNewsItem> getNewsByCategory(Event event, String category) {
|
||||
return getNews(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EventNewsItem> getNewsByCategory(Event event, Date startingFrom, String category) {
|
||||
return getNews(event, startingFrom);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.sap.sailing.news.impl;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class InfoEventNewsItem extends AbstractEventNewsItem {
|
||||
private Map<Locale, String> titles;
|
||||
private Map<Locale, String> messages;
|
||||
|
||||
public InfoEventNewsItem(UUID eventId, String title, String message, Date createdAtDate, String category,
|
||||
URL relatedItemLink, Map<Locale, String> titles, Map<Locale, String> messages) {
|
||||
super(eventId, title, message, createdAtDate, category, relatedItemLink);
|
||||
this.titles = titles;
|
||||
this.messages = messages;
|
||||
}
|
||||
|
||||
public String getTitle(Locale locale) {
|
||||
if(titles.containsKey(locale)) {
|
||||
return titles.get(locale);
|
||||
}
|
||||
return super.getTitle();
|
||||
}
|
||||
|
||||
public String getMessage(Locale locale) {
|
||||
if(messages.containsKey(locale)) {
|
||||
return messages.get(locale);
|
||||
}
|
||||
return super.getMessage();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
package com.sap.sailing.news.impl;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.json.simple.parser.ParseException;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.news.EventNewsItem;
|
||||
import com.sap.sailing.news.EventNewsProvider;
|
||||
|
||||
public class JsonEventNewsProvider implements EventNewsProvider {
|
||||
private static final int UPDATE_INTERVAL = 60_000;
|
||||
private static final int CONNECTION_TIMEOUT = 15_000;
|
||||
|
||||
private static final Logger logger = Logger.getLogger(JsonEventNewsProvider.class.getName());
|
||||
|
||||
private static URL staticNewsURL;
|
||||
|
||||
private List<InfoEventNewsItem> news = new LinkedList<>();
|
||||
private long nextUpdate = 0;
|
||||
|
||||
static {
|
||||
try {
|
||||
staticNewsURL = new URL("http://static.sapsailing.com/events_news/news.json");
|
||||
} catch (MalformedURLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
public JsonEventNewsProvider() {
|
||||
}
|
||||
|
||||
private synchronized void update() {
|
||||
if(nextUpdate >= System.currentTimeMillis()) {
|
||||
// update already done
|
||||
return;
|
||||
}
|
||||
nextUpdate = System.currentTimeMillis() + UPDATE_INTERVAL;
|
||||
|
||||
try {
|
||||
BufferedReader bufferedReader = null;
|
||||
try {
|
||||
logger.fine("Updating news from URL "+staticNewsURL);
|
||||
URLConnection urlConnection = staticNewsURL.openConnection();
|
||||
urlConnection.setConnectTimeout(CONNECTION_TIMEOUT);
|
||||
urlConnection.connect();
|
||||
bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
|
||||
JSONParser parser = new JSONParser();
|
||||
Object newsAsObject = parser.parse(bufferedReader);
|
||||
JSONArray newsAsJsonArray = (JSONArray) newsAsObject;
|
||||
List<InfoEventNewsItem> newNews = new LinkedList<>();
|
||||
for (Object eventAsObject : newsAsJsonArray) {
|
||||
JSONObject eventAsJson = (JSONObject) eventAsObject;
|
||||
String eventIdAsString = (String) eventAsJson.get("event");
|
||||
Number timestamp = (Number) eventAsJson.get("timestamp");
|
||||
String title = (String) eventAsJson.get("title");
|
||||
Map<Locale, String> titles = readI18nText(eventAsJson, "titles");
|
||||
String message = (String) eventAsJson.get("message");
|
||||
Map<Locale, String> messages = readI18nText(eventAsJson, "messages");
|
||||
String newsURL = (String) eventAsJson.get("url");
|
||||
UUID eventId = UUID.fromString(eventIdAsString);
|
||||
InfoEventNewsItem newsItem = new InfoEventNewsItem(eventId, title, message, new Date(timestamp.longValue()), null, newsURL == null ? null : new URL(newsURL), titles, messages);
|
||||
newNews.add(newsItem);
|
||||
}
|
||||
news = newNews;
|
||||
} finally {
|
||||
if (bufferedReader != null) {
|
||||
bufferedReader.close();
|
||||
}
|
||||
}
|
||||
} catch (IOException | ParseException e) {
|
||||
logger.log(Level.INFO, "Exception trying to fetch news from " + staticNewsURL, e);
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Locale, String> readI18nText(JSONObject eventAsJson, String field) {
|
||||
Object object = eventAsJson.get(field);
|
||||
if(object == null) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
JSONObject texts = (JSONObject) object;
|
||||
Set<Entry<Object, Object>> entrySet = texts.entrySet();
|
||||
Map<Locale, String> result = new HashMap<>();
|
||||
for (Entry<Object, Object> entry : entrySet) {
|
||||
result.put(Locale.forLanguageTag((String) entry.getKey()), (String) entry.getValue());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<? extends EventNewsItem> getNews(Event event) {
|
||||
if(nextUpdate < System.currentTimeMillis()) {
|
||||
update();
|
||||
}
|
||||
|
||||
UUID eventId = event.getId();
|
||||
List<InfoEventNewsItem> result = new LinkedList<>();
|
||||
for(InfoEventNewsItem newsEntry: news) {
|
||||
if(eventId.equals(newsEntry.getEventUUID())) {
|
||||
result.add(newsEntry);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<? extends EventNewsItem> getNews(Event event, Date startingFrom) {
|
||||
return getNews(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNews(Event event, Date startingFrom) {
|
||||
return news.size() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNews(Event event) {
|
||||
return news.size() > 0;
|
||||
}
|
||||
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package com.sap.sailing.news.impl;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.news.EventNewsItem;
|
||||
import com.sap.sailing.news.EventNewsProvider;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
/**
|
||||
* An event news provider looking at leaderboard updates triggered by changes of timePointOfLatestModification
|
||||
* @author Frank
|
||||
*
|
||||
*/
|
||||
public class LeaderboardUpdateEventNewsProvider implements EventNewsProvider {
|
||||
|
||||
@Override
|
||||
public Collection<? extends EventNewsItem> getNews(Event event) {
|
||||
List<LeaderboardUpdateNewsItem> result = new LinkedList<>();
|
||||
Iterable<LeaderboardGroup> leaderboardGroups = event.getLeaderboardGroups();
|
||||
for(LeaderboardGroup leaderboardGroup: leaderboardGroups) {
|
||||
for(Leaderboard leaderboard: leaderboardGroup.getLeaderboards()) {
|
||||
TimePoint timePointOfLatestModification = leaderboard.getTimePointOfLatestModification();
|
||||
if(timePointOfLatestModification == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String displayName = leaderboard.getDisplayName() != null ?leaderboard.getDisplayName() :leaderboard.getName();
|
||||
String boatClassName= null;
|
||||
if(leaderboard instanceof RegattaLeaderboard) {
|
||||
BoatClass boatClass = ((RegattaLeaderboard) leaderboard).getRegatta().getBoatClass();
|
||||
if(boatClass != null) {
|
||||
boatClassName = boatClass.getDisplayName();
|
||||
}
|
||||
}
|
||||
result.add(new LeaderboardUpdateNewsItem(event.getId(), timePointOfLatestModification.asDate(), leaderboard.getName(), displayName, boatClassName));
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(result);
|
||||
|
||||
if(result.size() <= 10) {
|
||||
return result;
|
||||
}
|
||||
return result.subList(0, 11);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<? extends EventNewsItem> getNews(Event event, Date startingFrom) {
|
||||
// TODO correct implementation
|
||||
return getNews(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNews(Event event, Date startingFrom) {
|
||||
// TODO correct implementation
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNews(Event event) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.sap.sailing.news.impl;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
public class LeaderboardUpdateNewsItem extends AbstractEventNewsItem {
|
||||
private String leaderboardName;
|
||||
private String boatClass;
|
||||
|
||||
public LeaderboardUpdateNewsItem(UUID eventId, Date updateDate, String leaderboardName, String leaderboardDisplayName, String boatClass) {
|
||||
super(eventId, leaderboardDisplayName, null, updateDate, null, null);
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.boatClass = boatClass;
|
||||
}
|
||||
|
||||
public String getLeaderboardName() {
|
||||
return leaderboardName;
|
||||
}
|
||||
|
||||
public String getBoatClass() {
|
||||
return boatClass;
|
||||
}
|
||||
}
|
||||
@@ -34,5 +34,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
@@ -33,5 +33,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
@@ -27,6 +27,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
+2
-2
@@ -16,7 +16,7 @@
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
|
||||
</listAttribute>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="false"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.8.0_31"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre1.8.0_20"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console -clean"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djetty.port=8889 -Dreplication.exchangeName=sapsailinganalytics-replica -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dexpedition.udp.port=2011 -Xmx6000m -Djetty.home=${project_loc:com.sap.sailing.server}/../target/configuration/jetty -Djava.util.logging.config.file=${project_loc:com.sap.sailing.server}/../target/configuration/logging_debug.properties -XX:+UseMembar -Djava.library.path=${project_loc:com.sap.sailing.monitoring}/../../configuration/native-libraries -Dtractrac.mtb.cache.dir=/Users/spamies/Projects/sailing/tmp/mtb -Dmongo.dbName=replica"/>
|
||||
@@ -27,6 +27,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
@@ -27,6 +27,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
@@ -16,7 +16,7 @@
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
|
||||
</listAttribute>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.8.0_31"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre1.8.0_20"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console -clean"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y -ea -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dfile.encoding=cp1252 -Dexpedition.udp.port=2010 -Xmx6000m -XX:+UseG1GC -Djetty.home=${project_loc:com.sap.sailing.server}/../target/configuration/jetty -Djava.util.logging.config.file=${project_loc:com.sap.sailing.server}/../target/configuration/logging_debug.properties -Dkiwo.results=${project_loc:com.sap.sailing.kiworesultimport.test}/resources -Dpersistentcompetitors.clear=false -XX:+UseMembar -Digtimi.client.id=7fcdd217e0aa16090edb4ad55b09ec43b2021090e209541fc9b7003c2a2b70c6 -Digtimi.client.secret=aa569cf4909bdc7b0e04b11873f3c4ea20687421e010fcc25b771cca9e6f3f9a -Digtimi.client.redirecturi=http://127.0.0.1:8888/igtimi/oauth/v1/authorizationcallback -DspatialWind=true -Dmongo.host=172.31.25.253 -Dmongo.port=10200 -Dmongo.dbName=LOAD_TEST"/>
|
||||
@@ -27,5 +27,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
@@ -33,5 +33,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway.test.support@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway.test.support@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
@@ -34,6 +34,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
@@ -27,6 +27,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@default:default,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
@@ -17,7 +17,7 @@
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
|
||||
</listAttribute>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.8.0_31"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre1.8.0_20"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Xmx6000m -Djava.util.logging.config.file=${project_loc:com.sap.sailing.server}/../target/configuration/logging_debug.properties -Dhttp.proxyHost=proxy.wdf.sap.corp -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy -Dhttps.proxyPort=8080 -Dexpedition.udp.port=2010 -Djetty.home=${project_loc:com.sap.sailing.server}/../target/configuration/jetty -Dkiwo.results=${project_loc:com.sap.sailing.kiworesultimport.test}/resources -XX:+UseMembar"/>
|
||||
@@ -27,5 +27,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="true"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
+1
-1
@@ -26,5 +26,5 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
</launchConfiguration>
|
||||
@@ -28,6 +28,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway.test.support@5:true,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.googlecode.mgwt@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.dashboards.gwt@5:true,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.deckmanadapter@4:true,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.racelogtrackingadapter@3:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@4:true,com.sap.sailing.domain.swisstimingreplayadapter@4:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@4:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@5:true,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.manage2sail@default:default,com.sap.sailing.news@default:default,com.sap.sailing.nmeaconnector@default:default,com.sap.sailing.polars@4:true,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@4:true,com.sap.sailing.server.gateway.serialization.shared.android@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway.test.support@5:true,com.sap.sailing.server.gateway@5:true,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@4:true,com.sap.sailing.www@4:true,com.sap.sailing.xrr.resultimport@default:default,com.sap.sailing.xrr.schema@default:default,com.sap.sailing.xrr.structureimport@default:default,com.sap.sse.common@default:default,com.sap.sse.datamining.shared@default:default,com.sap.sse.datamining@default:default,com.sap.sse.filestorage@default:default,com.sap.sse.gwt.adminconsole@default:default,com.sap.sse.gwt.theme@5:true,com.sap.sse.gwt@default:default,com.sap.sse.mail@4:true,com.sap.sse.mongodb@default:default,com.sap.sse.operationaltransformation@default:default,com.sap.sse.replication@4:true,com.sap.sse.security.common@default:default,com.sap.sse.security.ui@6:true,com.sap.sse.security.userstore.mongodb@4:true,com.sap.sse.security@5:true,com.sap.sse.shared.android@default:default,com.sap.sse@default:default,com.tractrac.clientmodule@default:default,net.sf.marineapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
+16
-16
@@ -207,6 +207,7 @@ import com.sap.sse.BuildVersion;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.TypeBasedServiceFinderFactory;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.ImageDescriptor;
|
||||
import com.sap.sse.common.media.VideoDescriptor;
|
||||
@@ -540,15 +541,23 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
// This is more for debugging purposes than for anything else.
|
||||
addFlexibleLeaderboard(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME, null, new int[] { 5, 8 },
|
||||
getBaseDomainFactory().createScoringScheme(ScoringSchemeType.LOW_POINT), null);
|
||||
loadStoredEvents();
|
||||
|
||||
final Iterable<Pair<Event, Boolean>> loadedEventsWithRequireStoreFlag = loadStoredEvents();
|
||||
loadStoredRegattas();
|
||||
loadRaceIDToRegattaAssociations();
|
||||
loadStoredLeaderboardsAndGroups();
|
||||
loadLinksFromEventsToLeaderboardGroups();
|
||||
storeLoadedEvents();
|
||||
loadMediaLibary();
|
||||
loadStoredDeviceConfigurations();
|
||||
loadAllRemoteSailingServersAndSchedulePeriodicEventCacheRefresh();
|
||||
|
||||
// Stores all events which run through a data migration
|
||||
// Remark: must be called after loadLinksFromEventsToLeaderboardGroups(), otherwise would loose the Event -> LeaderboardGroup relation
|
||||
for (Pair<Event, Boolean> eventAndRequireStoreFlag : loadedEventsWithRequireStoreFlag) {
|
||||
if (eventAndRequireStoreFlag.getB()) {
|
||||
mongoObjectFactory.storeEvent(eventAndRequireStoreFlag.getA());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -635,23 +644,14 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
}
|
||||
}
|
||||
|
||||
private void loadStoredEvents() {
|
||||
for (Event event : domainObjectFactory.loadAllEvents()) {
|
||||
private Iterable<Pair<Event, Boolean>> loadStoredEvents() {
|
||||
Iterable<Pair<Event, Boolean>> loadedEventsWithRequireStoreFlag = domainObjectFactory.loadAllEvents();
|
||||
for (Pair<Event, Boolean> eventAndFlag : loadedEventsWithRequireStoreFlag) {
|
||||
Event event = eventAndFlag.getA();
|
||||
if (event.getId() != null)
|
||||
eventsById.put(event.getId(), event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stores all events directly after loading them.
|
||||
* This is a workaround for a problem with event migration code which requires storing an event after some changes.
|
||||
* Because not all event data is stored in the event collection (e.g. LeaderboardGroup -> Event relation) the storeEvent
|
||||
* method must be called AFTER the event object is fully initialized.
|
||||
*/
|
||||
private void storeLoadedEvents() {
|
||||
for(Event event: eventsById.values()) {
|
||||
mongoObjectFactory.storeEvent(event);
|
||||
}
|
||||
return loadedEventsWithRequireStoreFlag;
|
||||
}
|
||||
|
||||
private void loadLinksFromEventsToLeaderboardGroups() {
|
||||
|
||||
@@ -5,6 +5,7 @@ import java.util.List;
|
||||
public interface WithMedia extends WithImages, WithVideos {
|
||||
ImageDescriptor findImageWithTag(String tagName);
|
||||
List<ImageDescriptor> findImagesWithTag(String tagName);
|
||||
boolean hasImageWithTag(String tagName);
|
||||
|
||||
VideoDescriptor findVideoWithTag(String tagName);
|
||||
List<VideoDescriptor> findVideosWithTag(String tagName);
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
<module>com.sap.sailing.domain.swisstimingadapter</module>
|
||||
<module>com.sap.sailing.domain.swisstimingadapter.persistence</module>
|
||||
<module>com.sap.sailing.domain.swisstimingreplayadapter</module>
|
||||
<module>com.sap.sailing.news</module>
|
||||
<module>com.sap.sailing.declination</module>
|
||||
<module>com.sap.sailing.udpconnector</module>
|
||||
<module>com.sap.sailing.expeditionconnector</module>
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
<item name="android:backgroundDimEnabled">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Welter" parent="android:Theme.Holo.Light">
|
||||
<style name="Theme.Welter" parent="Theme.AppCompat.Light">
|
||||
<item name="android:actionDropDownStyle">@style/MyDropDownNav</item>
|
||||
<item name="android:actionBarStyle">@style/Widget.Welter.ActionBar</item>
|
||||
<item name="android:textColorPrimary">@color/welter_deep_gray</item>
|
||||
<item name="android:actionOverflowButtonStyle">@android:style/Widget.Holo.ActionButton.Overflow</item>>
|
||||
<item name="android:actionOverflowButtonStyle">@android:style/Widget.Holo.ActionButton.Overflow</item>>
|
||||
<!-- <item name="timePickerStyle">@style/Widget.TimePicker</item> -->
|
||||
|
||||
|
||||
@@ -34,7 +34,9 @@
|
||||
<item name="android:textColorHighlightInverse">@color/welter_white</item>
|
||||
<item name="android:textColorLink">@color/welter_white</item>
|
||||
<item name="android:textColorLinkInverse">@color/welter_white</item>
|
||||
<item name="android:textColorAlertDialogListItem">@color/welter_white</item>
|
||||
<item name="android:textColorAlertDialogListItem">@color/welter_white</item>
|
||||
|
||||
|
||||
-->
|
||||
|
||||
|
||||
@@ -46,10 +48,12 @@
|
||||
<item name="android:listViewStyle">@style/Widget.ListView.Welter</item>
|
||||
item name="android:windowNoTitle">true</item
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="android:tabWidgetStyle">@style/LightTabWidget</item>
|
||||
<item name="android:tabWidgetStyle">@style/LightTabWidget</item>
|
||||
|
||||
|
||||
-->
|
||||
</style>
|
||||
|
||||
<style name="Theme" parent="android:Theme.Light.NoTitleBar"></style>
|
||||
<style name="Theme" parent="Theme.AppCompat.Light.NoActionBar"></style>
|
||||
|
||||
</resources>
|
||||
@@ -46,12 +46,12 @@ android {
|
||||
versionNameSuffix ".debug"
|
||||
signingConfig signingConfigs.stg_debug
|
||||
|
||||
minifyEnabled true
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-project.txt", "../proguard-mobile.txt"
|
||||
}
|
||||
|
||||
release {
|
||||
minifyEnabled true
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-project.txt", "../proguard-mobile.txt"
|
||||
}
|
||||
}
|
||||
|
||||
+3
-4
@@ -5,14 +5,13 @@ import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.app.ActionBar.OnNavigationListener;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentTransaction;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.util.Log;
|
||||
import android.view.Window;
|
||||
import android.widget.ArrayAdapter;
|
||||
@@ -46,7 +45,7 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener
|
||||
|
||||
private static final int RacesLoaderId = 0;
|
||||
|
||||
private class FilterModeSelectionBinder implements OnNavigationListener {
|
||||
private class FilterModeSelectionBinder implements ActionBar.OnNavigationListener {
|
||||
|
||||
private ManagedRaceListFragment targetList;
|
||||
private ActionBar actionBar;
|
||||
@@ -206,7 +205,7 @@ public class RacingActivity extends SessionActivity implements RaceInfoListener
|
||||
}
|
||||
|
||||
private void setupActionBar(CourseArea courseArea) {
|
||||
ActionBar actionBar = getActionBar();
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
AbstractLogEventAuthor author = preferences.getAuthor();
|
||||
String title = String.format(getString(R.string.racingview_header), courseArea.getName());
|
||||
title += " (" + author.getName() + ")";
|
||||
|
||||
+5
-3
@@ -1,12 +1,12 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.activities;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.DialogInterface.OnClickListener;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import android.support.v7.app.ActionBar;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
@@ -19,8 +19,10 @@ public abstract class SessionActivity extends BaseActivity {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
ActionBar actionBar = getActionBar();
|
||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
if (actionBar != null) {
|
||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -38,11 +38,11 @@ At this event we operate a replica on our SAP Sail Cube server. The server is ph
|
||||
The server runs a isc-dhcp-server, which requires all connected routers to NOT deliver a dhcp server. All required subnet config is in `/etc/dhcp/dhcpd.conf`. We have a /22 subnet for cube and a /24 subnet for the lounge. BeTomorrow get static ips assigned by the dhcp through MAC-addresses, because their server always needs the same ip address. Futhermore the dhcp deploys our own DNS server here. For further description of the DNS setup read further.
|
||||
|
||||
The server also runs a bind9 DNS server which is set as the primary DNS for all lounge and cube PCs. All DNS requests are forwarded to a public DNS server except for requests for 505worlds2014.sapsailing.com for which the local DNS server returns the IP address of the cube server for the NIC through which the DNS request was received. For that two DNS zones are introduced, which match by the incoming IP range request. See `/etc/bind/named.conf.zones-cube` and `/etc/bind/named.conf.zones-launch` for definition of zone and forwarding. Take a look at `/etc/bind/zones/505sapsailing.cube.db` and `/etc/bind/zones/505sapsailing.sailing.db` for the nameserver entries for the zone. The result is, that if a request comes from the lounge network, the domain is resolved to the ip the cube server has in this subnet and also if the request comes from the cube, it returns the ip in the subnet of the cube.
|
||||
As described in bug2204 wind data and API are not served through the replica, so BeTomorrow has to go to our main server. For that i introduced a subsubdomain `btmw.505worlds2014.sapsailing.com` which points to `sapsailing.com` and answers with our main active server of the event.
|
||||
As described in bug2204 wind data and API are not served through the replica, so BeTomorrow has to go to our main server. For that I introduced a subsubdomain `btmw.505worlds2014.sapsailing.com` which points to `sapsailing.com` and answers with our main active server of the event.
|
||||
|
||||
On the cube server we run a replica server instance as user `sailing` under the usual directory set-up (`/home/sailing/servers/server`). The `env.sh` file uses a configuration that lets the server start replicating when launched. The two possible master servers (A / B) are specified in two lines defining `REPLICATE_MASTER_SERVLET_HOST`, one is commented, the other one active.
|
||||
|
||||
When switching from the A server to the B server or vice versa, the replica needs to be re-configured. Before stopping it, connected clients need to be re-directed to the master when they hit 505worlds2014.sapsailing.com. This is achieved by re-configuring the Apache server running on the replica, as user `root`, editing `/etc/apache2/sites-enabled/001-events.conf` and activating the line for `505worlds2014.sapsailing.com` that points to the IP address of the new active server, then invoking `/etc/init.d/apache2 reload`. Once this is done, the running replica should cleanly stop replication (using the `Replication` tab in the AdminConsole), then stopping the instance (as user `sailing` run `/home/sailing/servers/server/stop`). Then, in `env.sh` the `REPLICATE_MASTER_SERVLET_HOST` variable needs to be set to point to the new master. After that, the replica Java instance can be launched using `/home/sailing/servers/server/start`). Before re-activating it is important that the rabbit initial load is done. So please watch eather `/home/sailing/servers/server/logs/sailing0.log.0` or the Rabbit Webinterface on `http://54.246.250.138:15672/#/queues`. Please deleted eventually displayed old queues (be sure not to remove the correct replicating queue!). Re-configure Apache again by editing `/etc/apache2/sites-enabled/001-events.conf` again, re-activating the record that lets 505worlds2014.sapsailing.com point to the replica. From this point on, clients in the lounge and the Cube will instantly be directed to the cube server again when hitting the replica server's Apache with a URL starting with `505worlds2014.sapsailing.com`. You can check this by example checking the load with `htop` or `apachetop`.
|
||||
When switching from the A server to the B server or vice versa, the replica needs to be re-configured. Before stopping it, connected clients need to be re-directed to the master when they hit 505worlds2014.sapsailing.com. This is achieved by re-configuring the Apache server running on the replica, as user `root`, editing `/etc/apache2/sites-enabled/001-events.conf` and activating the line for `505worlds2014.sapsailing.com` that points to the IP address of the new active server, then invoking `/etc/init.d/apache2 reload`. Once this is done, the running replica should cleanly stop replication (using the `Replication` tab in the AdminConsole), then stopping the instance (as user `sailing` run `/home/sailing/servers/server/stop`). Then, in `env.sh` the `REPLICATE_MASTER_SERVLET_HOST` variable needs to be set to point to the new master. After that, the replica Java instance can be launched using `/home/sailing/servers/server/start`). Before re-activating it is important that the rabbit initial load is done. So please watch either `/home/sailing/servers/server/logs/sailing0.log.0` or the Rabbit Webinterface on `http://54.246.250.138:15672/#/queues`. Please deleted eventually displayed old queues (be sure not to remove the correct replicating queue!). Re-configure Apache again by editing `/etc/apache2/sites-enabled/001-events.conf` again, re-activating the record that lets 505worlds2014.sapsailing.com point to the replica. From this point on, clients in the lounge and the Cube will instantly be directed to the cube server again when hitting the replica server's Apache with a URL starting with `505worlds2014.sapsailing.com`. You can check this by example checking the load with `htop` or `apachetop`.
|
||||
|
||||
## Switching Servers
|
||||
|
||||
|
||||
Reference in new issue
Block a user