From fc05cda6facdb56c74aaa80e7b6b076cf78252c2 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 17 Jan 2012 13:39:04 +0100 Subject: [PATCH 01/11] Backup before Placemark bugfixing --- .../domain/common/impl/PlacemarkImpl.java | 6 ++-- .../common/impl/RacePlaceOrderImpl.java | 12 ++++--- .../common/impl/SerializablePositionImpl.java | 11 ++++-- .../domain/tracking/impl/TrackedRaceImpl.java | 36 ++++++++++--------- .../sailing/geocoding/ReverseGeocoder.java | 1 + .../geocoding/impl/ReverseGeocoderImpl.java | 2 +- .../com.google.gwt.eclipse.core.prefs | 4 +-- .../sailing/gwt/ui/client/SailingService.java | 4 +++ .../gwt/ui/client/SailingServiceAsync.java | 5 +++ .../gwt/ui/server/SailingServiceImpl.java | 9 +++++ .../gwt/ui/spectator/OverviewEventPanel.java | 8 ++--- 11 files changed, 66 insertions(+), 32 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java index cedfe7d44bc..9359430aca4 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java @@ -1,5 +1,7 @@ package com.sap.sailing.domain.common.impl; +import java.io.Serializable; + import com.sap.sailing.domain.common.CountryCodeFactory; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Placemark; @@ -12,7 +14,7 @@ import com.sap.sailing.domain.common.SerializablePosition; * @author Lennart Hensler (D054527) * */ -public class PlacemarkImpl implements Placemark { +public class PlacemarkImpl implements Placemark, Serializable { private static final long serialVersionUID = -7287453946921815463L; private String name; @@ -20,7 +22,7 @@ public class PlacemarkImpl implements Placemark { private SerializablePosition position; private long population; - public PlacemarkImpl() {} + PlacemarkImpl() {} /** * Creates a new Placemark with the given parameters as attributes. diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/RacePlaceOrderImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/RacePlaceOrderImpl.java index 2087f46de6a..bc4ce47a4e8 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/RacePlaceOrderImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/RacePlaceOrderImpl.java @@ -1,22 +1,26 @@ package com.sap.sailing.domain.common.impl; +import java.io.Serializable; +import java.util.Collections; +import java.util.List; + import com.sap.sailing.domain.common.Placemark; import com.sap.sailing.domain.common.RacePlaceOrder; -public class RacePlaceOrderImpl implements RacePlaceOrder { +public class RacePlaceOrderImpl implements RacePlaceOrder, Serializable { private static final long serialVersionUID = 7590835541329816755L; - private Iterable places; + private List places; RacePlaceOrderImpl() {} - public RacePlaceOrderImpl(Iterable places) { + public RacePlaceOrderImpl(List places) { this.places = places; } @Override public Iterable getPlaces() { - return places; + return Collections.unmodifiableCollection(places); } @Override diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java index ef14ddc1f7e..f5fbed1388e 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java @@ -1,15 +1,17 @@ package com.sap.sailing.domain.common.impl; +import java.io.Serializable; + import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SerializablePosition; -public class SerializablePositionImpl implements SerializablePosition { +public class SerializablePositionImpl implements SerializablePosition, Serializable { private static final long serialVersionUID = -5649921262460723024L; private double latDeg; private double lngDeg; - public SerializablePositionImpl() {} + SerializablePositionImpl() {} public SerializablePositionImpl(double latDeg, double lngDeg) { super(); @@ -21,6 +23,11 @@ public class SerializablePositionImpl implements SerializablePosition { public Position getPosition() { return new DegreePosition(latDeg, lngDeg); } + + @Override + public String toString() { + return "(" + latDeg + ", " + lngDeg + ")"; + } @Override public int hashCode() { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java index 6b89974d27c..00ac0d6e7e7 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java @@ -37,10 +37,10 @@ import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.RacePlaceOrder; import com.sap.sailing.domain.common.Tack; import com.sap.sailing.domain.common.TimePoint; +import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.impl.RacePlaceOrderImpl; import com.sap.sailing.domain.common.impl.Util; import com.sap.sailing.domain.common.impl.Util.Pair; -import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.tracking.GPSFix; import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; @@ -959,6 +959,7 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { } } + @Override public RacePlaceOrder getPlaceOrder() { RacePlaceOrder order = null; Placemark startBest = null; @@ -988,25 +989,28 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { //Get finish position Waypoint finish = getRace().getCourse().getLastWaypoint(); Iterable finishPassings = getMarkPassingsInOrder(finish); + Iterator finishPassingsIterator = finishPassings.iterator(); MarkPassing finishPassing = null; - while (finishPassings.iterator().hasNext()) { - finishPassing = (MarkPassing) finishPassings.iterator().next(); + while (finishPassingsIterator.hasNext()) { + finishPassing = (MarkPassing) finishPassingsIterator.next(); } Position finishPosition = getApproximatePosition(finish, finishPassing.getTimePoint()); - try { - //Get distance to nearest placemark and calculate the search radius - Placemark finishNearest = ReverseGeocoder.INSTANCE.getPlacemarkNearest(finishPosition); - Distance finishNearestDistance = finishNearest.distanceFrom(finishPosition); - double finishRadius = finishNearestDistance.getKilometers() * GEONAMES_RADIUS_CACLCULATION_FACTOR; - - //Get the estimated best finish place - finishBest = ReverseGeocoder.INSTANCE.getPlacemarkLast(finishPosition, finishRadius, - new Placemark.ByPopulationDistanceRatio(finishPosition)); - } catch (IOException e) { - logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); - } catch (ParseException e) { - logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); + if (startPosition.getDistance(finishPosition).getKilometers() > ReverseGeocoder.POSITION_CACHE_DISTANCE_LIMIT_IN_KM) { + try { + // Get distance to nearest placemark and calculate the search radius + Placemark finishNearest = ReverseGeocoder.INSTANCE.getPlacemarkNearest(finishPosition); + Distance finishNearestDistance = finishNearest.distanceFrom(finishPosition); + double finishRadius = finishNearestDistance.getKilometers() * GEONAMES_RADIUS_CACLCULATION_FACTOR; + + // Get the estimated best finish place + finishBest = ReverseGeocoder.INSTANCE.getPlacemarkLast(finishPosition, finishRadius, + new Placemark.ByPopulationDistanceRatio(finishPosition)); + } catch (IOException e) { + logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); + } catch (ParseException e) { + logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); + } } if (startBest != null) { diff --git a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/ReverseGeocoder.java b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/ReverseGeocoder.java index d90d84bdefc..1e612ef5998 100644 --- a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/ReverseGeocoder.java +++ b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/ReverseGeocoder.java @@ -13,6 +13,7 @@ import com.sap.sailing.geocoding.impl.ReverseGeocoderImpl; public interface ReverseGeocoder { final ReverseGeocoder INSTANCE = new ReverseGeocoderImpl(); final String GEONAMES_USER = "sailtracking"; + final double POSITION_CACHE_DISTANCE_LIMIT_IN_KM = 5.0; /** * Returns the nearest {@link Placemark} towards the given {@link Position}. diff --git a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java index a66931e96e0..50b2fc07a00 100644 --- a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java +++ b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java @@ -34,7 +34,7 @@ public class ReverseGeocoderImpl implements ReverseGeocoder { * The first number is the distance in kilometers and the second number is a needed calculation factor and mustn't * be changed! To change the distance just change the first number! */ - private final double POSITION_CACHE_DISTANCE_LIMIT = 5.0 * 0.00899928005759539236861051115911; + private final double POSITION_CACHE_DISTANCE_LIMIT = ReverseGeocoder.POSITION_CACHE_DISTANCE_LIMIT_IN_KM * 0.00899928005759539236861051115911; private final int XKM_RADIUS = 5; private final int ROWS_PER_XKM_RADIUS = 15; diff --git a/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs b/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs index 15197d8d776..a4dd485e57f 100755 --- a/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs +++ b/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs @@ -1,5 +1,5 @@ -#Fri Jan 06 00:20:10 CET 2012 +#Mon Jan 16 18:21:00 CET 2012 eclipse.preferences.version=1 entryPointModules= filesCopiedToWebInfLib=gwt-servlet.jar -gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy13YXIgLiAtbG9jYWxXb3JrZXJzIDNdXT48L2V4dHJhLWFyZ3M+PHZtLWFyZ3M+PCFbQ0RBVEFbLVhteDUxMm1dXT48L3ZtLWFyZ3M+PGVudHJ5LXBvaW50LW1vZHVsZT5jb20uc2FwLnNhaWxpbmcuZ3d0LnVpLkFkbWluQ29uc29sZTwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5MZWFkZXJib2FyZDwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5MZWFkZXJib2FyZEVkaXRpbmc8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuVXNlck1hbmFnZW1lbnQ8L2VudHJ5LXBvaW50LW1vZHVsZT48L2d3dC1jb21waWxlLXNldHRpbmdzPg\=\= +gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy13YXIgLiAtbG9jYWxXb3JrZXJzIDNdXT48L2V4dHJhLWFyZ3M+PHZtLWFyZ3M+PCFbQ0RBVEFbLVhteDUxMm1dXT48L3ZtLWFyZ3M+PGVudHJ5LXBvaW50LW1vZHVsZT5jb20uc2FwLnNhaWxpbmcuZ3d0LnVpLkFkbWluQ29uc29sZTwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5MZWFkZXJib2FyZDwvZW50cnktcG9pbnQtbW9kdWxlPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5MZWFkZXJib2FyZEVkaXRpbmc8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuVXNlck1hbmFnZW1lbnQ8L2VudHJ5LXBvaW50LW1vZHVsZT48ZW50cnktcG9pbnQtbW9kdWxlPmNvbS5zYXAuc2FpbGluZy5nd3QudWkuU3BlY3RhdG9yPC9lbnRyeS1wb2ludC1tb2R1bGU+PC9nd3QtY29tcGlsZS1zZXR0aW5ncz4\= diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 3c2c6a92174..de4b5ae0803 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -8,6 +8,7 @@ import java.util.Map; import com.google.gwt.user.client.rpc.RemoteService; import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; import com.sap.sailing.domain.common.NoWindException; +import com.sap.sailing.domain.common.Placemark; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.impl.Util.Pair; import com.sap.sailing.gwt.ui.shared.CompetitorDAO; @@ -36,6 +37,9 @@ import com.sap.sailing.server.api.RaceIdentifier; */ @RemoteServiceRelativePath("sailing") public interface SailingService extends RemoteService { + // + Placemark testPlacemarkSerialization(); + // List getPreviousTracTracConfigurations() throws Exception; List listEvents(boolean withRacePlaces); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 4f82d32c72e..32652b56168 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -7,6 +7,7 @@ import java.util.Map; import com.google.gwt.user.client.rpc.AsyncCallback; import com.sap.sailing.domain.base.Course; +import com.sap.sailing.domain.common.Placemark; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.impl.Util.Pair; import com.sap.sailing.domain.leaderboard.RaceInLeaderboard; @@ -36,6 +37,9 @@ import com.sap.sailing.server.api.RaceIdentifier; * The async counterpart of {@link SailingService} */ public interface SailingServiceAsync { + // + void testPlacemarkSerialization(AsyncCallback callback); + // void listEvents(boolean withRacePlaces, AsyncCallback> callback); @@ -253,4 +257,5 @@ public interface SailingServiceAsync { * mark passing times, the race start time and the list of time points according to the above specification. */ void getCompetitorsAndTimePoints(RaceIdentifier race, int steps, AsyncCallback callback); + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 68d87e59ea8..d7bbc2069d9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -53,6 +53,7 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NoWindError; import com.sap.sailing.domain.common.NoWindException; +import com.sap.sailing.domain.common.Placemark; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.Tack; @@ -130,6 +131,13 @@ import com.sap.sailing.server.api.RaceIdentifier; * The server side implementation of the RPC service. */ public class SailingServiceImpl extends RemoteServiceServlet implements SailingService, RaceFetcher, EventFetcher { + // + @Override + public Placemark testPlacemarkSerialization() { + // TODO Auto-generated method stub + return null; + } + // private static final Logger logger = Logger.getLogger(SailingServiceImpl.class.getName()); private static final long serialVersionUID = 9031688830194537489L; @@ -1585,4 +1593,5 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS //Override to prevent exception "Blocked request without GWT permutation header (XSRF attack?)" when testing the GWT sites return; } + } \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/OverviewEventPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/OverviewEventPanel.java index 23122bb5378..2f48a4d5670 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/OverviewEventPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/OverviewEventPanel.java @@ -13,10 +13,9 @@ import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.user.cellview.client.CellTable; -import com.google.gwt.user.cellview.client.ColumnSortEvent; import com.google.gwt.user.cellview.client.ColumnSortEvent.Handler; -import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler; +import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; @@ -29,7 +28,6 @@ import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.SelectionChangeEvent; -import com.google.gwt.view.client.SelectionModel; import com.google.gwt.view.client.SingleSelectionModel; import com.sap.sailing.gwt.ui.client.AbstractEventPanel; import com.sap.sailing.gwt.ui.client.ErrorReporter; @@ -289,11 +287,11 @@ public class OverviewEventPanel extends AbstractEventPanel { public void onSuccess(List result) { if (result != null) { availableEvents = new ArrayList(result); - eventTableProvider.getList().clear(); - eventTableProvider.setList(availableEvents); } else { availableEvents.clear(); } + eventTableProvider.getList().clear(); + eventTableProvider.setList(availableEvents); if (actionAfterLoading != null) { actionAfterLoading.run(); } From 94fc9816df39bb6cb2692fc8a91a2b1583af48ca Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 17 Jan 2012 14:20:37 +0100 Subject: [PATCH 02/11] Name and CountryCode Attributes are not the problem --- .../sap/sailing/domain/common/Placemark.java | 182 +++++++++--------- .../domain/common/impl/PlacemarkImpl.java | 174 ++++++++--------- .../common/impl/RacePlaceOrderImpl.java | 28 +-- .../domain/tracking/impl/TrackedRaceImpl.java | 112 +++++------ .../sailing/geocoding/test/PlacemarkTest.java | 6 +- .../geocoding/test/ReverseGeocoderTest.java | 90 ++++----- .../geocoding/impl/ReverseGeocoderImpl.java | 6 +- 7 files changed, 299 insertions(+), 299 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java index 69a0804b66c..3ac049d2abf 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java @@ -20,96 +20,96 @@ public interface Placemark extends Serializable { * @return The 2 letters country code of the Placemark */ String getCountryCode(); - - /** - * @return The {@link Position} of the Placemark - */ - Position getPosition(); - - /** - * @return The population of the Placemark - */ - long getPopulation(); - - /** - * @param position The {@link Position} from which the distance is calculated - * @return The {@link Distance} between the given {@link Position} and the Placemark - */ - Distance distanceFrom(Position position); - - /** - * Creates a new {@link Position} out of the given coordinates and calculates the distance between {@link Position} and - * the Placemark via {@link Placemark#distanceFrom(Position) distanceFrom(Position)}. - * @param latDeg Latitude in degrees - * @param lngDeg Longitude in degrees - * @return The {@link Distance} between the given coordinates and the Placemark - */ - Distance distanceFrom(double latDeg, double lngDeg); - - /** - * @return The name of the country where the Placemark is located - */ - String getCountryName(); - - - - - - - /** - * Sorts the Placemarks by Population from low to high. - * @author Lennart Hensler (D054527) - * - */ - public class ByPopulation implements Comparator { - @Override - public int compare(Placemark p1, Placemark p2) { - return p1.getPopulation() > p2.getPopulation() ? 1 : p1.getPopulation() < p2.getPopulation() ? -1 : 0; - } - } - - /** - * Sorts the Placemarks by distance to a {@link Position} from near to far.

- * - * If you use this for {@link ReverseGeocoder#getPlacemarkLast(Position, float, Comparator) getPlacemarkBest(Position position,...)} to - * get the nearest Placemark for position you can use {@link ReverseGeocoder#getPlacemarkNearest(Position) getPlacemark} instead. - * getPlacemark returns per default the nearest Placemark for a Position. - * @author Lennart Hensler (D054527) - * - */ - public class ByDistance implements Comparator { - - private Position position; - - public ByDistance(Position position) { - this.position = position; - } - - @Override - public int compare(Placemark p1, Placemark p2) { - Distance d1 = p1.distanceFrom(position); - Distance d2 = p2.distanceFrom(position); - - return d1.compareTo(d2); - } - } - - public class ByPopulationDistanceRatio implements Comparator { - - private Position position; - - public ByPopulationDistanceRatio(Position position) { - this.position = position; - } - - @Override - public int compare(Placemark p1, Placemark p2) { - double r1 = p1.getPopulation() / p1.distanceFrom(position).getKilometers(); - double r2 = p2.getPopulation() / p2.distanceFrom(position).getKilometers(); - - return r1 > r2 ? 1 : r1 < r2 ? -1 : 0; - } - - } +// +// /** +// * @return The {@link Position} of the Placemark +// */ +// Position getPosition(); +// +// /** +// * @return The population of the Placemark +// */ +// long getPopulation(); +// +// /** +// * @param position The {@link Position} from which the distance is calculated +// * @return The {@link Distance} between the given {@link Position} and the Placemark +// */ +// Distance distanceFrom(Position position); +// +// /** +// * Creates a new {@link Position} out of the given coordinates and calculates the distance between {@link Position} and +// * the Placemark via {@link Placemark#distanceFrom(Position) distanceFrom(Position)}. +// * @param latDeg Latitude in degrees +// * @param lngDeg Longitude in degrees +// * @return The {@link Distance} between the given coordinates and the Placemark +// */ +// Distance distanceFrom(double latDeg, double lngDeg); +// +// /** +// * @return The name of the country where the Placemark is located +// */ +// String getCountryName(); +// +// +// +// +// +// +// /** +// * Sorts the Placemarks by Population from low to high. +// * @author Lennart Hensler (D054527) +// * +// */ +// public class ByPopulation implements Comparator { +// @Override +// public int compare(Placemark p1, Placemark p2) { +// return p1.getPopulation() > p2.getPopulation() ? 1 : p1.getPopulation() < p2.getPopulation() ? -1 : 0; +// } +// } +// +// /** +// * Sorts the Placemarks by distance to a {@link Position} from near to far.

+// * +// * If you use this for {@link ReverseGeocoder#getPlacemarkLast(Position, float, Comparator) getPlacemarkBest(Position position,...)} to +// * get the nearest Placemark for position you can use {@link ReverseGeocoder#getPlacemarkNearest(Position) getPlacemark} instead. +// * getPlacemark returns per default the nearest Placemark for a Position. +// * @author Lennart Hensler (D054527) +// * +// */ +// public class ByDistance implements Comparator { +// +// private Position position; +// +// public ByDistance(Position position) { +// this.position = position; +// } +// +// @Override +// public int compare(Placemark p1, Placemark p2) { +// Distance d1 = p1.distanceFrom(position); +// Distance d2 = p2.distanceFrom(position); +// +// return d1.compareTo(d2); +// } +// } +// +// public class ByPopulationDistanceRatio implements Comparator { +// +// private Position position; +// +// public ByPopulationDistanceRatio(Position position) { +// this.position = position; +// } +// +// @Override +// public int compare(Placemark p1, Placemark p2) { +// double r1 = p1.getPopulation() / p1.distanceFrom(position).getKilometers(); +// double r2 = p2.getPopulation() / p2.distanceFrom(position).getKilometers(); +// +// return r1 > r2 ? 1 : r1 < r2 ? -1 : 0; +// } +// +// } } diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java index 9359430aca4..88b9ddca851 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java @@ -19,27 +19,27 @@ public class PlacemarkImpl implements Placemark, Serializable { private String name; private String countryCode; - private SerializablePosition position; - private long population; - +// private SerializablePosition position; +// private long population; +// PlacemarkImpl() {} /** * Creates a new Placemark with the given parameters as attributes. */ - public PlacemarkImpl(String name, String countryCode, SerializablePosition position, long population) { + public PlacemarkImpl(String name, String countryCode/*, SerializablePosition position, long population*/) { this.name = name; this.countryCode = countryCode; - this.position = position; - this.population = population; +// this.position = position; +// this.population = population; } - /** - * Creates a new Placemark with the given parameters as attributes and a population of 0; - */ - public PlacemarkImpl(String name, String countryCode, String countryName, SerializablePosition position, String type) { - this(name, countryCode, position, 0); - } +// /** +// * Creates a new Placemark with the given parameters as attributes and a population of 0; +// */ +// public PlacemarkImpl(String name, String countryCode, String countryName, SerializablePosition position, String type) { +// this(name, countryCode, position, 0); +// } public String getName() { return name; @@ -48,80 +48,80 @@ public class PlacemarkImpl implements Placemark, Serializable { public String getCountryCode() { return countryCode; } - - public Position getPosition() { - return position.getPosition(); - } - - public long getPopulation() { - return population; - } - - - @Override - public Distance distanceFrom(Position position) { - return this.position.getPosition().getDistance(position); - } - @Override - public Distance distanceFrom(double latDeg, double lngDeg) { - Position p = new DegreePosition(latDeg, lngDeg); - return distanceFrom(p); - } - - @Override - public String getCountryName() { - return CountryCodeFactory.INSTANCE.getFromTwoLetterISOName(countryCode).getName(); - } - - @Override - public String toString() { - StringBuilder b = new StringBuilder(Placemark.class.getSimpleName() + "["); - b.append(name + ", "); - b.append(countryCode + ", "); - b.append(position.toString() + ", "); - b.append(population + "]"); - - return b.toString(); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((countryCode == null) ? 0 : countryCode.hashCode()); - result = prime * result + ((name == null) ? 0 : name.hashCode()); - result = prime * result + (int) (population ^ (population >>> 32)); - result = prime * result + ((position == null) ? 0 : position.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - PlacemarkImpl other = (PlacemarkImpl) obj; - if (countryCode == null) { - if (other.countryCode != null) - return false; - } else if (!countryCode.equals(other.countryCode)) - return false; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - if (population != other.population) - return false; - if (position == null) { - if (other.position != null) - return false; - } else if (!position.equals(other.position)) - return false; - return true; - } +// +// public Position getPosition() { +// return position.getPosition(); +// } +// +// public long getPopulation() { +// return population; +// } +// +// +// @Override +// public Distance distanceFrom(Position position) { +// return this.position.getPosition().getDistance(position); +// } +// @Override +// public Distance distanceFrom(double latDeg, double lngDeg) { +// Position p = new DegreePosition(latDeg, lngDeg); +// return distanceFrom(p); +// } +// +// @Override +// public String getCountryName() { +// return CountryCodeFactory.INSTANCE.getFromTwoLetterISOName(countryCode).getName(); +// } +// +// @Override +// public String toString() { +// StringBuilder b = new StringBuilder(Placemark.class.getSimpleName() + "["); +// b.append(name + ", "); +// b.append(countryCode + ", "); +// b.append(position.toString() + ", "); +// b.append(population + "]"); +// +// return b.toString(); +// } +// +// @Override +// public int hashCode() { +// final int prime = 31; +// int result = 1; +// result = prime * result + ((countryCode == null) ? 0 : countryCode.hashCode()); +// result = prime * result + ((name == null) ? 0 : name.hashCode()); +// result = prime * result + (int) (population ^ (population >>> 32)); +// result = prime * result + ((position == null) ? 0 : position.hashCode()); +// return result; +// } +// +// @Override +// public boolean equals(Object obj) { +// if (this == obj) +// return true; +// if (obj == null) +// return false; +// if (getClass() != obj.getClass()) +// return false; +// PlacemarkImpl other = (PlacemarkImpl) obj; +// if (countryCode == null) { +// if (other.countryCode != null) +// return false; +// } else if (!countryCode.equals(other.countryCode)) +// return false; +// if (name == null) { +// if (other.name != null) +// return false; +// } else if (!name.equals(other.name)) +// return false; +// if (population != other.population) +// return false; +// if (position == null) { +// if (other.position != null) +// return false; +// } else if (!position.equals(other.position)) +// return false; +// return true; +// } } diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/RacePlaceOrderImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/RacePlaceOrderImpl.java index bc4ce47a4e8..77aa591c3cd 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/RacePlaceOrderImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/RacePlaceOrderImpl.java @@ -23,20 +23,20 @@ public class RacePlaceOrderImpl implements RacePlaceOrder, Serializable { return Collections.unmodifiableCollection(places); } - @Override - public String toString() { - StringBuilder b = new StringBuilder(); - boolean first = true; - for (Placemark place : places) { - if (first) { - b.append(place.getCountryCode() + ", " + place.getName()); - first = false; - } else { - b.append(" -> " + place.getCountryCode() + ", " + place.getName()); - } - } - return b.toString(); - } +// @Override +// public String toString() { +// StringBuilder b = new StringBuilder(); +// boolean first = true; +// for (Placemark place : places) { +// if (first) { +// b.append(place.getCountryCode() + ", " + place.getName()); +// first = false; +// } else { +// b.append(" -> " + place.getCountryCode() + ", " + place.getName()); +// } +// } +// return b.toString(); +// } @Override public int hashCode() { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java index 00ac0d6e7e7..7ab8c8f6c54 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java @@ -965,62 +965,62 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { Placemark startBest = null; Placemark finishBest = null; - //Get start postition - Waypoint start = getRace().getCourse().getFirstWaypoint(); - Iterable startPassings = getMarkPassingsInOrder(start); - MarkPassing startPassing = startPassings.iterator().next(); - Position startPosition = getApproximatePosition(start, startPassing.getTimePoint()); - - try { - //Get distance to nearest placemark and calculate the search radius - Placemark startNearest = ReverseGeocoder.INSTANCE.getPlacemarkNearest(startPosition); - Distance startNearestDistance = startNearest.distanceFrom(startPosition); - double startRadius = startNearestDistance.getKilometers() * GEONAMES_RADIUS_CACLCULATION_FACTOR; - - //Get the estimated best start place - startBest = ReverseGeocoder.INSTANCE.getPlacemarkLast(startPosition, startRadius, - new Placemark.ByPopulationDistanceRatio(startPosition)); - } catch (IOException e) { - logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); - } catch (ParseException e) { - logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); - } - - //Get finish position - Waypoint finish = getRace().getCourse().getLastWaypoint(); - Iterable finishPassings = getMarkPassingsInOrder(finish); - Iterator finishPassingsIterator = finishPassings.iterator(); - MarkPassing finishPassing = null; - while (finishPassingsIterator.hasNext()) { - finishPassing = (MarkPassing) finishPassingsIterator.next(); - } - Position finishPosition = getApproximatePosition(finish, finishPassing.getTimePoint()); - - if (startPosition.getDistance(finishPosition).getKilometers() > ReverseGeocoder.POSITION_CACHE_DISTANCE_LIMIT_IN_KM) { - try { - // Get distance to nearest placemark and calculate the search radius - Placemark finishNearest = ReverseGeocoder.INSTANCE.getPlacemarkNearest(finishPosition); - Distance finishNearestDistance = finishNearest.distanceFrom(finishPosition); - double finishRadius = finishNearestDistance.getKilometers() * GEONAMES_RADIUS_CACLCULATION_FACTOR; - - // Get the estimated best finish place - finishBest = ReverseGeocoder.INSTANCE.getPlacemarkLast(finishPosition, finishRadius, - new Placemark.ByPopulationDistanceRatio(finishPosition)); - } catch (IOException e) { - logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); - } catch (ParseException e) { - logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); - } - } - - if (startBest != null) { - final List places = new ArrayList(); - places.add(startBest); - if (!startBest.equals(finishBest)) { - places.add(finishBest); - } - order = new RacePlaceOrderImpl(places); - } +// //Get start postition +// Waypoint start = getRace().getCourse().getFirstWaypoint(); +// Iterable startPassings = getMarkPassingsInOrder(start); +// MarkPassing startPassing = startPassings.iterator().next(); +// Position startPosition = getApproximatePosition(start, startPassing.getTimePoint()); +// +// try { +// //Get distance to nearest placemark and calculate the search radius +// Placemark startNearest = ReverseGeocoder.INSTANCE.getPlacemarkNearest(startPosition); +// Distance startNearestDistance = startNearest.distanceFrom(startPosition); +// double startRadius = startNearestDistance.getKilometers() * GEONAMES_RADIUS_CACLCULATION_FACTOR; +// +// //Get the estimated best start place +// startBest = ReverseGeocoder.INSTANCE.getPlacemarkLast(startPosition, startRadius, +// new Placemark.ByPopulationDistanceRatio(startPosition)); +// } catch (IOException e) { +// logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); +// } catch (ParseException e) { +// logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); +// } +// +// //Get finish position +// Waypoint finish = getRace().getCourse().getLastWaypoint(); +// Iterable finishPassings = getMarkPassingsInOrder(finish); +// Iterator finishPassingsIterator = finishPassings.iterator(); +// MarkPassing finishPassing = null; +// while (finishPassingsIterator.hasNext()) { +// finishPassing = (MarkPassing) finishPassingsIterator.next(); +// } +// Position finishPosition = getApproximatePosition(finish, finishPassing.getTimePoint()); +// +// if (startPosition.getDistance(finishPosition).getKilometers() > ReverseGeocoder.POSITION_CACHE_DISTANCE_LIMIT_IN_KM) { +// try { +// // Get distance to nearest placemark and calculate the search radius +// Placemark finishNearest = ReverseGeocoder.INSTANCE.getPlacemarkNearest(finishPosition); +// Distance finishNearestDistance = finishNearest.distanceFrom(finishPosition); +// double finishRadius = finishNearestDistance.getKilometers() * GEONAMES_RADIUS_CACLCULATION_FACTOR; +// +// // Get the estimated best finish place +// finishBest = ReverseGeocoder.INSTANCE.getPlacemarkLast(finishPosition, finishRadius, +// new Placemark.ByPopulationDistanceRatio(finishPosition)); +// } catch (IOException e) { +// logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); +// } catch (ParseException e) { +// logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); +// } +// } +// +// if (startBest != null) { +// final List places = new ArrayList(); +// places.add(startBest); +// if (!startBest.equals(finishBest)) { +// places.add(finishBest); +// } +// order = new RacePlaceOrderImpl(places); +// } return order; } diff --git a/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/PlacemarkTest.java b/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/PlacemarkTest.java index 7886b3545b4..65e8d8f4c44 100644 --- a/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/PlacemarkTest.java +++ b/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/PlacemarkTest.java @@ -11,9 +11,9 @@ public class PlacemarkTest { @Test public void placemarkEqualsTest() { - Placemark p1 = new PlacemarkImpl("Kiel", "DE", "Germany", new SerializablePositionImpl(55, 10), "P"); - Placemark p2 = new PlacemarkImpl("Kiel", "DE", "Germany", new SerializablePositionImpl(55, 10), "P"); - Assert.assertEquals(p1, p2); +// Placemark p1 = new PlacemarkImpl("Kiel", "DE", "Germany", new SerializablePositionImpl(55, 10), "P"); +// Placemark p2 = new PlacemarkImpl("Kiel", "DE", "Germany", new SerializablePositionImpl(55, 10), "P"); +// Assert.assertEquals(p1, p2); } } diff --git a/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/ReverseGeocoderTest.java b/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/ReverseGeocoderTest.java index b9e5c784981..c96e30bfcc5 100644 --- a/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/ReverseGeocoderTest.java +++ b/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/ReverseGeocoderTest.java @@ -18,66 +18,66 @@ import com.sap.sailing.geocoding.ReverseGeocoder; public class ReverseGeocoderTest { private ReverseGeocoder geocoder = ReverseGeocoder.INSTANCE; - private static final Placemark KIEL = new PlacemarkImpl("Kiel", "DE", new SerializablePositionImpl(54.32132926107913, 10.1348876953125), 232758); +// private static final Placemark KIEL = new PlacemarkImpl("Kiel", "DE", new SerializablePositionImpl(54.32132926107913, 10.1348876953125), 232758); private static final Position KIEL_POSITION = new DegreePosition(54.3231063453431, 10.12265682220459); @Test public void getPlacemarkSimpleTest() { - //Simple Test in Kiel center to check the connection and the parsing from JSONObject to Placemark - try { - Placemark kielReversed = geocoder.getPlacemarkNearest(KIEL_POSITION); - Assert.assertEquals(KIEL, kielReversed); - } catch (IOException e) { - Assert.fail(e.getMessage()); - } catch (ParseException e) { - Assert.fail(e.getMessage()); - } +// //Simple Test in Kiel center to check the connection and the parsing from JSONObject to Placemark +// try { +// Placemark kielReversed = geocoder.getPlacemarkNearest(KIEL_POSITION); +// Assert.assertEquals(KIEL, kielReversed); +// } catch (IOException e) { +// Assert.fail(e.getMessage()); +// } catch (ParseException e) { +// Assert.fail(e.getMessage()); +// } } @Test public void getPlacemarkNearSimpleTest() { - try { - List placemarks = geocoder.getPlacemarksNear(KIEL_POSITION, 20); - Assert.assertFalse(placemarks.isEmpty()); - } catch (IOException e) { - Assert.fail(e.getMessage()); - } catch (ParseException e) { - Assert.fail(e.getMessage()); - } +// try { +// List placemarks = geocoder.getPlacemarksNear(KIEL_POSITION, 20); +// Assert.assertFalse(placemarks.isEmpty()); +// } catch (IOException e) { +// Assert.fail(e.getMessage()); +// } catch (ParseException e) { +// Assert.fail(e.getMessage()); +// } } @Test public void getPlacemarkBestTest() { - Position abroad = new DegreePosition(54.43334, 10.299999); - Placemark firstByDistance = new PlacemarkImpl("Wendtorf", "DE", new SerializablePositionImpl(54.4166667, 10.3), 1139); - - try { - Placemark p = geocoder.getPlacemarkLast(abroad, 20, new Placemark.ByPopulation()); - Assert.assertEquals(KIEL, p); - - p = geocoder.getPlacemarkFirst(abroad, 20, new Placemark.ByDistance(abroad)); - Assert.assertEquals(firstByDistance, p); - - p = geocoder.getPlacemarkLast(abroad, 20, new Placemark.ByPopulationDistanceRatio(abroad)); - Assert.assertEquals(KIEL, p); - } catch (IOException e) { - Assert.fail(e.getMessage()); - } catch (ParseException e) { - Assert.fail(e.getMessage()); - } +// Position abroad = new DegreePosition(54.43334, 10.299999); +// Placemark firstByDistance = new PlacemarkImpl("Wendtorf", "DE", new SerializablePositionImpl(54.4166667, 10.3), 1139); +// +// try { +// Placemark p = geocoder.getPlacemarkLast(abroad, 20, new Placemark.ByPopulation()); +// Assert.assertEquals(KIEL, p); +// +// p = geocoder.getPlacemarkFirst(abroad, 20, new Placemark.ByDistance(abroad)); +// Assert.assertEquals(firstByDistance, p); +// +// p = geocoder.getPlacemarkLast(abroad, 20, new Placemark.ByPopulationDistanceRatio(abroad)); +// Assert.assertEquals(KIEL, p); +// } catch (IOException e) { +// Assert.fail(e.getMessage()); +// } catch (ParseException e) { +// Assert.fail(e.getMessage()); +// } } @Test public void getPlacemarkNearWithOffshorePosition() { - Position offshore = new DegreePosition(75.16330024622059, -0.087890625); - long radius = 300; - try { - List placemarks = geocoder.getPlacemarksNear(offshore, radius); - Assert.assertNull(placemarks); - } catch (IOException e) { - Assert.fail(e.getMessage()); - } catch (ParseException e) { - Assert.fail(e.getMessage()); - } +// Position offshore = new DegreePosition(75.16330024622059, -0.087890625); +// long radius = 300; +// try { +// List placemarks = geocoder.getPlacemarksNear(offshore, radius); +// Assert.assertNull(placemarks); +// } catch (IOException e) { +// Assert.fail(e.getMessage()); +// } catch (ParseException e) { +// Assert.fail(e.getMessage()); +// } } } diff --git a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java index 50b2fc07a00..aea7bbc1edb 100644 --- a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java +++ b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java @@ -172,7 +172,7 @@ public class ReverseGeocoderImpl implements ReverseGeocoder { long population = (Long) json.get("population"); if (name != null && lngDeg != null && latDeg != null) { - return new PlacemarkImpl(name, countryCode, position, population); + return new PlacemarkImpl(name, countryCode/*, position, population*/); } else { return null; } @@ -190,8 +190,8 @@ public class ReverseGeocoderImpl implements ReverseGeocoder { * The results of the search */ private void cachePlacemarks(Position position, Double radius, List placemarks) { - Collections.sort(placemarks, new Placemark.ByDistance(position)); - cache.put(position, new Triple>(position, radius, placemarks)); +// Collections.sort(placemarks, new Placemark.ByDistance(position)); +// cache.put(position, new Triple>(position, radius, placemarks)); } /** From fcd7d791208c6453bcf61b7f5c59b0306438bf12 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 17 Jan 2012 14:24:54 +0100 Subject: [PATCH 03/11] "implements Serializable" is not necessary in PlacemarkImpl --- .../src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java index 88b9ddca851..a1e7165a2fa 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java @@ -14,7 +14,7 @@ import com.sap.sailing.domain.common.SerializablePosition; * @author Lennart Hensler (D054527) * */ -public class PlacemarkImpl implements Placemark, Serializable { +public class PlacemarkImpl implements Placemark { private static final long serialVersionUID = -7287453946921815463L; private String name; From 87c77b1f9ae1ef650ba6254d1a99c3a58caf7973 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 17 Jan 2012 14:39:37 +0100 Subject: [PATCH 04/11] Comparators in Placemark were not the problem --- .../sap/sailing/domain/common/Placemark.java | 107 +++++++++--------- 1 file changed, 55 insertions(+), 52 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java index 3ac049d2abf..cefd7f8e907 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java @@ -50,66 +50,69 @@ public interface Placemark extends Serializable { // * @return The name of the country where the Placemark is located // */ // String getCountryName(); -// -// -// -// -// -// -// /** -// * Sorts the Placemarks by Population from low to high. -// * @author Lennart Hensler (D054527) -// * -// */ -// public class ByPopulation implements Comparator { -// @Override -// public int compare(Placemark p1, Placemark p2) { + + + + + + + /** + * Sorts the Placemarks by Population from low to high. + * @author Lennart Hensler (D054527) + * + */ + public class ByPopulation implements Comparator { + @Override + public int compare(Placemark p1, Placemark p2) { // return p1.getPopulation() > p2.getPopulation() ? 1 : p1.getPopulation() < p2.getPopulation() ? -1 : 0; -// } -// } -// -// /** -// * Sorts the Placemarks by distance to a {@link Position} from near to far.

-// * -// * If you use this for {@link ReverseGeocoder#getPlacemarkLast(Position, float, Comparator) getPlacemarkBest(Position position,...)} to -// * get the nearest Placemark for position you can use {@link ReverseGeocoder#getPlacemarkNearest(Position) getPlacemark} instead. -// * getPlacemark returns per default the nearest Placemark for a Position. -// * @author Lennart Hensler (D054527) -// * -// */ -// public class ByDistance implements Comparator { -// -// private Position position; -// -// public ByDistance(Position position) { -// this.position = position; -// } -// -// @Override -// public int compare(Placemark p1, Placemark p2) { + return 0; + } + } + + /** + * Sorts the Placemarks by distance to a {@link Position} from near to far.

+ * + * If you use this for {@link ReverseGeocoder#getPlacemarkLast(Position, float, Comparator) getPlacemarkBest(Position position,...)} to + * get the nearest Placemark for position you can use {@link ReverseGeocoder#getPlacemarkNearest(Position) getPlacemark} instead. + * getPlacemark returns per default the nearest Placemark for a Position. + * @author Lennart Hensler (D054527) + * + */ + public class ByDistance implements Comparator { + + private Position position; + + public ByDistance(Position position) { + this.position = position; + } + + @Override + public int compare(Placemark p1, Placemark p2) { // Distance d1 = p1.distanceFrom(position); // Distance d2 = p2.distanceFrom(position); // // return d1.compareTo(d2); -// } -// } -// -// public class ByPopulationDistanceRatio implements Comparator { -// -// private Position position; -// -// public ByPopulationDistanceRatio(Position position) { -// this.position = position; -// } -// -// @Override -// public int compare(Placemark p1, Placemark p2) { + return 0; + } + } + + public class ByPopulationDistanceRatio implements Comparator { + + private Position position; + + public ByPopulationDistanceRatio(Position position) { + this.position = position; + } + + @Override + public int compare(Placemark p1, Placemark p2) { // double r1 = p1.getPopulation() / p1.distanceFrom(position).getKilometers(); // double r2 = p2.getPopulation() / p2.distanceFrom(position).getKilometers(); // // return r1 > r2 ? 1 : r1 < r2 ? -1 : 0; -// } -// -// } + return 0; + } + + } } From 18fb3752560bf7763d3ddc3851efa6b0ff063267 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 17 Jan 2012 14:53:48 +0100 Subject: [PATCH 05/11] Position Attribute is not the problem --- .../com/sap/sailing/domain/common/Placemark.java | 10 +++++----- .../domain/common/impl/PlacemarkImpl.java | 16 ++++++++-------- .../geocoding/impl/ReverseGeocoderImpl.java | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java index cefd7f8e907..a56cf47e72a 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java @@ -25,11 +25,11 @@ public interface Placemark extends Serializable { // * @return The {@link Position} of the Placemark // */ // Position getPosition(); -// -// /** -// * @return The population of the Placemark -// */ -// long getPopulation(); + + /** + * @return The population of the Placemark + */ + long getPopulation(); // // /** // * @param position The {@link Position} from which the distance is calculated diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java index a1e7165a2fa..b90a03963f6 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java @@ -20,18 +20,18 @@ public class PlacemarkImpl implements Placemark { private String name; private String countryCode; // private SerializablePosition position; -// private long population; -// + private long population; + PlacemarkImpl() {} /** * Creates a new Placemark with the given parameters as attributes. */ - public PlacemarkImpl(String name, String countryCode/*, SerializablePosition position, long population*/) { + public PlacemarkImpl(String name, String countryCode/*, SerializablePosition position*/, long population) { this.name = name; this.countryCode = countryCode; // this.position = position; -// this.population = population; + this.population = population; } // /** @@ -52,10 +52,10 @@ public class PlacemarkImpl implements Placemark { // public Position getPosition() { // return position.getPosition(); // } -// -// public long getPopulation() { -// return population; -// } + + public long getPopulation() { + return population; + } // // // @Override diff --git a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java index aea7bbc1edb..243612ec4a0 100644 --- a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java +++ b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java @@ -172,7 +172,7 @@ public class ReverseGeocoderImpl implements ReverseGeocoder { long population = (Long) json.get("population"); if (name != null && lngDeg != null && latDeg != null) { - return new PlacemarkImpl(name, countryCode/*, position, population*/); + return new PlacemarkImpl(name, countryCode/*, position*/, population); } else { return null; } From d3c659a1a596e6bced3cd3fa256f820bf2e46b89 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 17 Jan 2012 15:40:39 +0100 Subject: [PATCH 06/11] Error: Double.doubletoLongBits() not supported by GWTError: Double.doubletoLongBits() not supported by GWT --- .../domain/common/impl/PlacemarkImpl.java | 2 +- .../common/impl/SerializablePositionImpl.java | 59 +++++++++---------- .../geocoding/impl/ReverseGeocoderImpl.java | 2 +- 3 files changed, 30 insertions(+), 33 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java index b90a03963f6..9cc404de800 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java @@ -19,7 +19,7 @@ public class PlacemarkImpl implements Placemark { private String name; private String countryCode; -// private SerializablePosition position; + private SerializablePosition position; private long population; PlacemarkImpl() {} diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java index f5fbed1388e..0f4082ba6c5 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java @@ -1,11 +1,9 @@ package com.sap.sailing.domain.common.impl; -import java.io.Serializable; - import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.SerializablePosition; -public class SerializablePositionImpl implements SerializablePosition, Serializable { +public class SerializablePositionImpl implements SerializablePosition { private static final long serialVersionUID = -5649921262460723024L; private double latDeg; @@ -14,7 +12,6 @@ public class SerializablePositionImpl implements SerializablePosition, Serializa SerializablePositionImpl() {} public SerializablePositionImpl(double latDeg, double lngDeg) { - super(); this.latDeg = latDeg; this.lngDeg = lngDeg; } @@ -29,32 +26,32 @@ public class SerializablePositionImpl implements SerializablePosition, Serializa return "(" + latDeg + ", " + lngDeg + ")"; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - long temp; - temp = Double.doubleToLongBits(latDeg); - result = prime * result + (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(lngDeg); - result = prime * result + (int) (temp ^ (temp >>> 32)); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - SerializablePositionImpl other = (SerializablePositionImpl) obj; - if (Double.doubleToLongBits(latDeg) != Double.doubleToLongBits(other.latDeg)) - return false; - if (Double.doubleToLongBits(lngDeg) != Double.doubleToLongBits(other.lngDeg)) - return false; - return true; - } +// @Override +// public int hashCode() { +// final int prime = 31; +// int result = 1; +// long temp; +// temp = Double.doubleToLongBits(latDeg); +// result = prime * result + (int) (temp ^ (temp >>> 32)); +// temp = Double.doubleToLongBits(lngDeg); +// result = prime * result + (int) (temp ^ (temp >>> 32)); +// return result; +// } +// +// @Override +// public boolean equals(Object obj) { +// if (this == obj) +// return true; +// if (obj == null) +// return false; +// if (getClass() != obj.getClass()) +// return false; +// SerializablePositionImpl other = (SerializablePositionImpl) obj; +// if (Double.doubleToLongBits(latDeg) != Double.doubleToLongBits(other.latDeg)) +// return false; +// if (Double.doubleToLongBits(lngDeg) != Double.doubleToLongBits(other.lngDeg)) +// return false; +// return true; +// } } diff --git a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java index 243612ec4a0..c55a404ed16 100644 --- a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java +++ b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java @@ -167,7 +167,7 @@ public class ReverseGeocoderImpl implements ReverseGeocoder { } catch (ClassCastException e) { lngDeg = ((Long) json.get("lng")).doubleValue(); } - SerializablePosition position = new SerializablePositionImpl(latDeg, lngDeg); +// SerializablePosition position = new SerializablePositionImpl(latDeg, lngDeg); long population = (Long) json.get("population"); From 955ac3f43675b90a22449d182f384235a7ca2e1d Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Wed, 18 Jan 2012 11:15:03 +0100 Subject: [PATCH 07/11] Try to fix serialization bug --- .../domain/common/impl/SerializablePositionImpl.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java index f5fbed1388e..3ba24d97798 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java @@ -33,10 +33,9 @@ public class SerializablePositionImpl implements SerializablePosition, Serializa public int hashCode() { final int prime = 31; int result = 1; - long temp; - temp = Double.doubleToLongBits(latDeg); + int temp = (int) latDeg; result = prime * result + (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(lngDeg); + temp = (int) lngDeg; result = prime * result + (int) (temp ^ (temp >>> 32)); return result; } @@ -50,9 +49,9 @@ public class SerializablePositionImpl implements SerializablePosition, Serializa if (getClass() != obj.getClass()) return false; SerializablePositionImpl other = (SerializablePositionImpl) obj; - if (Double.doubleToLongBits(latDeg) != Double.doubleToLongBits(other.latDeg)) + if (new Double(latDeg).equals(other.latDeg)) return false; - if (Double.doubleToLongBits(lngDeg) != Double.doubleToLongBits(other.lngDeg)) + if (new Double(lngDeg).equals(other.lngDeg)) return false; return true; } From 276278b07d1831f730bbb040ec92140a6ca8d1b1 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Wed, 18 Jan 2012 12:07:54 +0100 Subject: [PATCH 08/11] Problem localized in AbstractBearing (use of doubleToLongBits) --- .../sap/sailing/domain/common/impl/PlacemarkImpl.java | 10 +++++----- .../domain/common/impl/SerializablePositionImpl.java | 11 ++++++----- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java index 9cc404de800..9c24ed9390b 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java @@ -48,10 +48,10 @@ public class PlacemarkImpl implements Placemark { public String getCountryCode() { return countryCode; } -// -// public Position getPosition() { -// return position.getPosition(); -// } + + public Position getPosition() { + return position.getPosition(); + } public long getPopulation() { return population; @@ -83,7 +83,7 @@ public class PlacemarkImpl implements Placemark { // // return b.toString(); // } -// + // @Override // public int hashCode() { // final int prime = 31; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java index 0f4082ba6c5..9b4f1475c3e 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java @@ -18,7 +18,8 @@ public class SerializablePositionImpl implements SerializablePosition { @Override public Position getPosition() { - return new DegreePosition(latDeg, lngDeg); +// return new DegreePosition(latDeg, lngDeg); + return null; } @Override @@ -31,9 +32,9 @@ public class SerializablePositionImpl implements SerializablePosition { // final int prime = 31; // int result = 1; // long temp; -// temp = Double.doubleToLongBits(latDeg); +// temp = (int) latDeg; // result = prime * result + (int) (temp ^ (temp >>> 32)); -// temp = Double.doubleToLongBits(lngDeg); +// temp = (int) latDeg; // result = prime * result + (int) (temp ^ (temp >>> 32)); // return result; // } @@ -47,9 +48,9 @@ public class SerializablePositionImpl implements SerializablePosition { // if (getClass() != obj.getClass()) // return false; // SerializablePositionImpl other = (SerializablePositionImpl) obj; -// if (Double.doubleToLongBits(latDeg) != Double.doubleToLongBits(other.latDeg)) +// if (!new Double(latDeg).equals(other.latDeg)) // return false; -// if (Double.doubleToLongBits(lngDeg) != Double.doubleToLongBits(other.lngDeg)) +// if (!new Double(lngDeg).equals(other.lngDeg)) // return false; // return true; // } From 849df66d9c3ace4e6e0597dd1305f85664fe9b46 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Wed, 18 Jan 2012 14:03:33 +0100 Subject: [PATCH 09/11] Placemark toString problem solved --- .../domain/common/impl/PlacemarkImpl.java | 101 +++++++++--------- .../common/impl/SerializablePositionImpl.java | 54 +++++----- 2 files changed, 78 insertions(+), 77 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java index 9c24ed9390b..5baf1144160 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java @@ -72,56 +72,57 @@ public class PlacemarkImpl implements Placemark { // public String getCountryName() { // return CountryCodeFactory.INSTANCE.getFromTwoLetterISOName(countryCode).getName(); // } -// -// @Override -// public String toString() { -// StringBuilder b = new StringBuilder(Placemark.class.getSimpleName() + "["); -// b.append(name + ", "); -// b.append(countryCode + ", "); -// b.append(position.toString() + ", "); -// b.append(population + "]"); -// -// return b.toString(); -// } + + @Override + public String toString() { + StringBuilder b = new StringBuilder(); + + b.append(name + ", "); + b.append(countryCode + ", "); + b.append(position.toString() + ", "); + b.append(population); + + return b.toString(); + } -// @Override -// public int hashCode() { -// final int prime = 31; -// int result = 1; -// result = prime * result + ((countryCode == null) ? 0 : countryCode.hashCode()); -// result = prime * result + ((name == null) ? 0 : name.hashCode()); -// result = prime * result + (int) (population ^ (population >>> 32)); -// result = prime * result + ((position == null) ? 0 : position.hashCode()); -// return result; -// } -// -// @Override -// public boolean equals(Object obj) { -// if (this == obj) -// return true; -// if (obj == null) -// return false; -// if (getClass() != obj.getClass()) -// return false; -// PlacemarkImpl other = (PlacemarkImpl) obj; -// if (countryCode == null) { -// if (other.countryCode != null) -// return false; -// } else if (!countryCode.equals(other.countryCode)) -// return false; -// if (name == null) { -// if (other.name != null) -// return false; -// } else if (!name.equals(other.name)) -// return false; -// if (population != other.population) -// return false; -// if (position == null) { -// if (other.position != null) -// return false; -// } else if (!position.equals(other.position)) -// return false; -// return true; -// } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((countryCode == null) ? 0 : countryCode.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + (int) (population ^ (population >>> 32)); + result = prime * result + ((position == null) ? 0 : position.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + PlacemarkImpl other = (PlacemarkImpl) obj; + if (countryCode == null) { + if (other.countryCode != null) + return false; + } else if (!countryCode.equals(other.countryCode)) + return false; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + if (population != other.population) + return false; + if (position == null) { + if (other.position != null) + return false; + } else if (!position.equals(other.position)) + return false; + return true; + } } diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java index 9b4f1475c3e..de41f0bbfd5 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java @@ -27,32 +27,32 @@ public class SerializablePositionImpl implements SerializablePosition { return "(" + latDeg + ", " + lngDeg + ")"; } -// @Override -// public int hashCode() { -// final int prime = 31; -// int result = 1; -// long temp; -// temp = (int) latDeg; -// result = prime * result + (int) (temp ^ (temp >>> 32)); -// temp = (int) latDeg; -// result = prime * result + (int) (temp ^ (temp >>> 32)); -// return result; -// } -// -// @Override -// public boolean equals(Object obj) { -// if (this == obj) -// return true; -// if (obj == null) -// return false; -// if (getClass() != obj.getClass()) -// return false; -// SerializablePositionImpl other = (SerializablePositionImpl) obj; -// if (!new Double(latDeg).equals(other.latDeg)) -// return false; -// if (!new Double(lngDeg).equals(other.lngDeg)) -// return false; -// return true; -// } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + long temp; + temp = (int) latDeg; + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = (int) latDeg; + result = prime * result + (int) (temp ^ (temp >>> 32)); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + SerializablePositionImpl other = (SerializablePositionImpl) obj; + if (!new Double(latDeg).equals(other.latDeg)) + return false; + if (!new Double(lngDeg).equals(other.lngDeg)) + return false; + return true; + } } From ca803b68f69abb018574d75702eebcdf75af100b Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Wed, 18 Jan 2012 14:34:36 +0100 Subject: [PATCH 10/11] Placemark serialization bug solved --- .../domain/common/AbstractBearing.java | 2 +- .../sap/sailing/domain/common/Placemark.java | 71 ++++++----- .../domain/common/impl/AbstractSpeedImpl.java | 2 +- .../domain/common/impl/PlacemarkImpl.java | 50 ++++---- .../common/impl/SerializablePositionImpl.java | 3 +- .../domain/tracking/impl/TrackedRaceImpl.java | 112 +++++++++--------- .../sailing/geocoding/test/PlacemarkTest.java | 6 +- .../geocoding/test/ReverseGeocoderTest.java | 90 +++++++------- .../geocoding/impl/ReverseGeocoderImpl.java | 4 +- 9 files changed, 167 insertions(+), 173 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractBearing.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractBearing.java index e37f18b310d..38b92103697 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractBearing.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractBearing.java @@ -50,7 +50,7 @@ public abstract class AbstractBearing implements Bearing { @Override public int hashCode() { - return (int) (1023 ^ Double.doubleToLongBits(getDegrees())); + return 1023 ^ (int) getDegrees(); } @Override diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java index a56cf47e72a..69a0804b66c 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Placemark.java @@ -20,36 +20,36 @@ public interface Placemark extends Serializable { * @return The 2 letters country code of the Placemark */ String getCountryCode(); -// -// /** -// * @return The {@link Position} of the Placemark -// */ -// Position getPosition(); + + /** + * @return The {@link Position} of the Placemark + */ + Position getPosition(); /** * @return The population of the Placemark */ long getPopulation(); -// -// /** -// * @param position The {@link Position} from which the distance is calculated -// * @return The {@link Distance} between the given {@link Position} and the Placemark -// */ -// Distance distanceFrom(Position position); -// -// /** -// * Creates a new {@link Position} out of the given coordinates and calculates the distance between {@link Position} and -// * the Placemark via {@link Placemark#distanceFrom(Position) distanceFrom(Position)}. -// * @param latDeg Latitude in degrees -// * @param lngDeg Longitude in degrees -// * @return The {@link Distance} between the given coordinates and the Placemark -// */ -// Distance distanceFrom(double latDeg, double lngDeg); -// -// /** -// * @return The name of the country where the Placemark is located -// */ -// String getCountryName(); + + /** + * @param position The {@link Position} from which the distance is calculated + * @return The {@link Distance} between the given {@link Position} and the Placemark + */ + Distance distanceFrom(Position position); + + /** + * Creates a new {@link Position} out of the given coordinates and calculates the distance between {@link Position} and + * the Placemark via {@link Placemark#distanceFrom(Position) distanceFrom(Position)}. + * @param latDeg Latitude in degrees + * @param lngDeg Longitude in degrees + * @return The {@link Distance} between the given coordinates and the Placemark + */ + Distance distanceFrom(double latDeg, double lngDeg); + + /** + * @return The name of the country where the Placemark is located + */ + String getCountryName(); @@ -64,8 +64,7 @@ public interface Placemark extends Serializable { public class ByPopulation implements Comparator { @Override public int compare(Placemark p1, Placemark p2) { -// return p1.getPopulation() > p2.getPopulation() ? 1 : p1.getPopulation() < p2.getPopulation() ? -1 : 0; - return 0; + return p1.getPopulation() > p2.getPopulation() ? 1 : p1.getPopulation() < p2.getPopulation() ? -1 : 0; } } @@ -88,11 +87,10 @@ public interface Placemark extends Serializable { @Override public int compare(Placemark p1, Placemark p2) { -// Distance d1 = p1.distanceFrom(position); -// Distance d2 = p2.distanceFrom(position); -// -// return d1.compareTo(d2); - return 0; + Distance d1 = p1.distanceFrom(position); + Distance d2 = p2.distanceFrom(position); + + return d1.compareTo(d2); } } @@ -106,11 +104,10 @@ public interface Placemark extends Serializable { @Override public int compare(Placemark p1, Placemark p2) { -// double r1 = p1.getPopulation() / p1.distanceFrom(position).getKilometers(); -// double r2 = p2.getPopulation() / p2.distanceFrom(position).getKilometers(); -// -// return r1 > r2 ? 1 : r1 < r2 ? -1 : 0; - return 0; + double r1 = p1.getPopulation() / p1.distanceFrom(position).getKilometers(); + double r2 = p2.getPopulation() / p2.distanceFrom(position).getKilometers(); + + return r1 > r2 ? 1 : r1 < r2 ? -1 : 0; } } diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/AbstractSpeedImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/AbstractSpeedImpl.java index 7fe346edde0..46405147658 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/AbstractSpeedImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/AbstractSpeedImpl.java @@ -39,7 +39,7 @@ public abstract class AbstractSpeedImpl implements Speed { @Override public int hashCode() { - return (int) (31 * Double.doubleToLongBits(getMetersPerSecond())); + return 31 * (int) getMetersPerSecond(); } @Override diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java index 5baf1144160..f8644c9d085 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PlacemarkImpl.java @@ -1,7 +1,5 @@ package com.sap.sailing.domain.common.impl; -import java.io.Serializable; - import com.sap.sailing.domain.common.CountryCodeFactory; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Placemark; @@ -27,19 +25,19 @@ public class PlacemarkImpl implements Placemark { /** * Creates a new Placemark with the given parameters as attributes. */ - public PlacemarkImpl(String name, String countryCode/*, SerializablePosition position*/, long population) { + public PlacemarkImpl(String name, String countryCode, SerializablePosition position, long population) { this.name = name; this.countryCode = countryCode; -// this.position = position; + this.position = position; this.population = population; } -// /** -// * Creates a new Placemark with the given parameters as attributes and a population of 0; -// */ -// public PlacemarkImpl(String name, String countryCode, String countryName, SerializablePosition position, String type) { -// this(name, countryCode, position, 0); -// } + /** + * Creates a new Placemark with the given parameters as attributes and a population of 0; + */ + public PlacemarkImpl(String name, String countryCode, String countryName, SerializablePosition position, String type) { + this(name, countryCode, position, 0); + } public String getName() { return name; @@ -56,22 +54,22 @@ public class PlacemarkImpl implements Placemark { public long getPopulation() { return population; } -// -// -// @Override -// public Distance distanceFrom(Position position) { -// return this.position.getPosition().getDistance(position); -// } -// @Override -// public Distance distanceFrom(double latDeg, double lngDeg) { -// Position p = new DegreePosition(latDeg, lngDeg); -// return distanceFrom(p); -// } -// -// @Override -// public String getCountryName() { -// return CountryCodeFactory.INSTANCE.getFromTwoLetterISOName(countryCode).getName(); -// } + + + @Override + public Distance distanceFrom(Position position) { + return this.position.getPosition().getDistance(position); + } + @Override + public Distance distanceFrom(double latDeg, double lngDeg) { + Position p = new DegreePosition(latDeg, lngDeg); + return distanceFrom(p); + } + + @Override + public String getCountryName() { + return CountryCodeFactory.INSTANCE.getFromTwoLetterISOName(countryCode).getName(); + } @Override public String toString() { diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java index de41f0bbfd5..f7ce0e3a613 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java @@ -18,8 +18,7 @@ public class SerializablePositionImpl implements SerializablePosition { @Override public Position getPosition() { -// return new DegreePosition(latDeg, lngDeg); - return null; + return new DegreePosition(latDeg, lngDeg); } @Override diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java index 7ab8c8f6c54..00ac0d6e7e7 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java @@ -965,62 +965,62 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { Placemark startBest = null; Placemark finishBest = null; -// //Get start postition -// Waypoint start = getRace().getCourse().getFirstWaypoint(); -// Iterable startPassings = getMarkPassingsInOrder(start); -// MarkPassing startPassing = startPassings.iterator().next(); -// Position startPosition = getApproximatePosition(start, startPassing.getTimePoint()); -// -// try { -// //Get distance to nearest placemark and calculate the search radius -// Placemark startNearest = ReverseGeocoder.INSTANCE.getPlacemarkNearest(startPosition); -// Distance startNearestDistance = startNearest.distanceFrom(startPosition); -// double startRadius = startNearestDistance.getKilometers() * GEONAMES_RADIUS_CACLCULATION_FACTOR; -// -// //Get the estimated best start place -// startBest = ReverseGeocoder.INSTANCE.getPlacemarkLast(startPosition, startRadius, -// new Placemark.ByPopulationDistanceRatio(startPosition)); -// } catch (IOException e) { -// logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); -// } catch (ParseException e) { -// logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); -// } -// -// //Get finish position -// Waypoint finish = getRace().getCourse().getLastWaypoint(); -// Iterable finishPassings = getMarkPassingsInOrder(finish); -// Iterator finishPassingsIterator = finishPassings.iterator(); -// MarkPassing finishPassing = null; -// while (finishPassingsIterator.hasNext()) { -// finishPassing = (MarkPassing) finishPassingsIterator.next(); -// } -// Position finishPosition = getApproximatePosition(finish, finishPassing.getTimePoint()); -// -// if (startPosition.getDistance(finishPosition).getKilometers() > ReverseGeocoder.POSITION_CACHE_DISTANCE_LIMIT_IN_KM) { -// try { -// // Get distance to nearest placemark and calculate the search radius -// Placemark finishNearest = ReverseGeocoder.INSTANCE.getPlacemarkNearest(finishPosition); -// Distance finishNearestDistance = finishNearest.distanceFrom(finishPosition); -// double finishRadius = finishNearestDistance.getKilometers() * GEONAMES_RADIUS_CACLCULATION_FACTOR; -// -// // Get the estimated best finish place -// finishBest = ReverseGeocoder.INSTANCE.getPlacemarkLast(finishPosition, finishRadius, -// new Placemark.ByPopulationDistanceRatio(finishPosition)); -// } catch (IOException e) { -// logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); -// } catch (ParseException e) { -// logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); -// } -// } -// -// if (startBest != null) { -// final List places = new ArrayList(); -// places.add(startBest); -// if (!startBest.equals(finishBest)) { -// places.add(finishBest); -// } -// order = new RacePlaceOrderImpl(places); -// } + //Get start postition + Waypoint start = getRace().getCourse().getFirstWaypoint(); + Iterable startPassings = getMarkPassingsInOrder(start); + MarkPassing startPassing = startPassings.iterator().next(); + Position startPosition = getApproximatePosition(start, startPassing.getTimePoint()); + + try { + //Get distance to nearest placemark and calculate the search radius + Placemark startNearest = ReverseGeocoder.INSTANCE.getPlacemarkNearest(startPosition); + Distance startNearestDistance = startNearest.distanceFrom(startPosition); + double startRadius = startNearestDistance.getKilometers() * GEONAMES_RADIUS_CACLCULATION_FACTOR; + + //Get the estimated best start place + startBest = ReverseGeocoder.INSTANCE.getPlacemarkLast(startPosition, startRadius, + new Placemark.ByPopulationDistanceRatio(startPosition)); + } catch (IOException e) { + logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); + } catch (ParseException e) { + logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); + } + + //Get finish position + Waypoint finish = getRace().getCourse().getLastWaypoint(); + Iterable finishPassings = getMarkPassingsInOrder(finish); + Iterator finishPassingsIterator = finishPassings.iterator(); + MarkPassing finishPassing = null; + while (finishPassingsIterator.hasNext()) { + finishPassing = (MarkPassing) finishPassingsIterator.next(); + } + Position finishPosition = getApproximatePosition(finish, finishPassing.getTimePoint()); + + if (startPosition.getDistance(finishPosition).getKilometers() > ReverseGeocoder.POSITION_CACHE_DISTANCE_LIMIT_IN_KM) { + try { + // Get distance to nearest placemark and calculate the search radius + Placemark finishNearest = ReverseGeocoder.INSTANCE.getPlacemarkNearest(finishPosition); + Distance finishNearestDistance = finishNearest.distanceFrom(finishPosition); + double finishRadius = finishNearestDistance.getKilometers() * GEONAMES_RADIUS_CACLCULATION_FACTOR; + + // Get the estimated best finish place + finishBest = ReverseGeocoder.INSTANCE.getPlacemarkLast(finishPosition, finishRadius, + new Placemark.ByPopulationDistanceRatio(finishPosition)); + } catch (IOException e) { + logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); + } catch (ParseException e) { + logger.throwing(TrackedRaceImpl.class.getName(), "getPlaceOrder()", e); + } + } + + if (startBest != null) { + final List places = new ArrayList(); + places.add(startBest); + if (!startBest.equals(finishBest)) { + places.add(finishBest); + } + order = new RacePlaceOrderImpl(places); + } return order; } diff --git a/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/PlacemarkTest.java b/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/PlacemarkTest.java index 65e8d8f4c44..7886b3545b4 100644 --- a/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/PlacemarkTest.java +++ b/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/PlacemarkTest.java @@ -11,9 +11,9 @@ public class PlacemarkTest { @Test public void placemarkEqualsTest() { -// Placemark p1 = new PlacemarkImpl("Kiel", "DE", "Germany", new SerializablePositionImpl(55, 10), "P"); -// Placemark p2 = new PlacemarkImpl("Kiel", "DE", "Germany", new SerializablePositionImpl(55, 10), "P"); -// Assert.assertEquals(p1, p2); + Placemark p1 = new PlacemarkImpl("Kiel", "DE", "Germany", new SerializablePositionImpl(55, 10), "P"); + Placemark p2 = new PlacemarkImpl("Kiel", "DE", "Germany", new SerializablePositionImpl(55, 10), "P"); + Assert.assertEquals(p1, p2); } } diff --git a/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/ReverseGeocoderTest.java b/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/ReverseGeocoderTest.java index c96e30bfcc5..b9e5c784981 100644 --- a/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/ReverseGeocoderTest.java +++ b/java/com.sap.sailing.geocoding.test/src/com/sap/sailing/geocoding/test/ReverseGeocoderTest.java @@ -18,66 +18,66 @@ import com.sap.sailing.geocoding.ReverseGeocoder; public class ReverseGeocoderTest { private ReverseGeocoder geocoder = ReverseGeocoder.INSTANCE; -// private static final Placemark KIEL = new PlacemarkImpl("Kiel", "DE", new SerializablePositionImpl(54.32132926107913, 10.1348876953125), 232758); + private static final Placemark KIEL = new PlacemarkImpl("Kiel", "DE", new SerializablePositionImpl(54.32132926107913, 10.1348876953125), 232758); private static final Position KIEL_POSITION = new DegreePosition(54.3231063453431, 10.12265682220459); @Test public void getPlacemarkSimpleTest() { -// //Simple Test in Kiel center to check the connection and the parsing from JSONObject to Placemark -// try { -// Placemark kielReversed = geocoder.getPlacemarkNearest(KIEL_POSITION); -// Assert.assertEquals(KIEL, kielReversed); -// } catch (IOException e) { -// Assert.fail(e.getMessage()); -// } catch (ParseException e) { -// Assert.fail(e.getMessage()); -// } + //Simple Test in Kiel center to check the connection and the parsing from JSONObject to Placemark + try { + Placemark kielReversed = geocoder.getPlacemarkNearest(KIEL_POSITION); + Assert.assertEquals(KIEL, kielReversed); + } catch (IOException e) { + Assert.fail(e.getMessage()); + } catch (ParseException e) { + Assert.fail(e.getMessage()); + } } @Test public void getPlacemarkNearSimpleTest() { -// try { -// List placemarks = geocoder.getPlacemarksNear(KIEL_POSITION, 20); -// Assert.assertFalse(placemarks.isEmpty()); -// } catch (IOException e) { -// Assert.fail(e.getMessage()); -// } catch (ParseException e) { -// Assert.fail(e.getMessage()); -// } + try { + List placemarks = geocoder.getPlacemarksNear(KIEL_POSITION, 20); + Assert.assertFalse(placemarks.isEmpty()); + } catch (IOException e) { + Assert.fail(e.getMessage()); + } catch (ParseException e) { + Assert.fail(e.getMessage()); + } } @Test public void getPlacemarkBestTest() { -// Position abroad = new DegreePosition(54.43334, 10.299999); -// Placemark firstByDistance = new PlacemarkImpl("Wendtorf", "DE", new SerializablePositionImpl(54.4166667, 10.3), 1139); -// -// try { -// Placemark p = geocoder.getPlacemarkLast(abroad, 20, new Placemark.ByPopulation()); -// Assert.assertEquals(KIEL, p); -// -// p = geocoder.getPlacemarkFirst(abroad, 20, new Placemark.ByDistance(abroad)); -// Assert.assertEquals(firstByDistance, p); -// -// p = geocoder.getPlacemarkLast(abroad, 20, new Placemark.ByPopulationDistanceRatio(abroad)); -// Assert.assertEquals(KIEL, p); -// } catch (IOException e) { -// Assert.fail(e.getMessage()); -// } catch (ParseException e) { -// Assert.fail(e.getMessage()); -// } + Position abroad = new DegreePosition(54.43334, 10.299999); + Placemark firstByDistance = new PlacemarkImpl("Wendtorf", "DE", new SerializablePositionImpl(54.4166667, 10.3), 1139); + + try { + Placemark p = geocoder.getPlacemarkLast(abroad, 20, new Placemark.ByPopulation()); + Assert.assertEquals(KIEL, p); + + p = geocoder.getPlacemarkFirst(abroad, 20, new Placemark.ByDistance(abroad)); + Assert.assertEquals(firstByDistance, p); + + p = geocoder.getPlacemarkLast(abroad, 20, new Placemark.ByPopulationDistanceRatio(abroad)); + Assert.assertEquals(KIEL, p); + } catch (IOException e) { + Assert.fail(e.getMessage()); + } catch (ParseException e) { + Assert.fail(e.getMessage()); + } } @Test public void getPlacemarkNearWithOffshorePosition() { -// Position offshore = new DegreePosition(75.16330024622059, -0.087890625); -// long radius = 300; -// try { -// List placemarks = geocoder.getPlacemarksNear(offshore, radius); -// Assert.assertNull(placemarks); -// } catch (IOException e) { -// Assert.fail(e.getMessage()); -// } catch (ParseException e) { -// Assert.fail(e.getMessage()); -// } + Position offshore = new DegreePosition(75.16330024622059, -0.087890625); + long radius = 300; + try { + List placemarks = geocoder.getPlacemarksNear(offshore, radius); + Assert.assertNull(placemarks); + } catch (IOException e) { + Assert.fail(e.getMessage()); + } catch (ParseException e) { + Assert.fail(e.getMessage()); + } } } diff --git a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java index c55a404ed16..a784769dc0f 100644 --- a/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java +++ b/java/com.sap.sailing.geocoding/src/com/sap/sailing/geocoding/impl/ReverseGeocoderImpl.java @@ -167,12 +167,12 @@ public class ReverseGeocoderImpl implements ReverseGeocoder { } catch (ClassCastException e) { lngDeg = ((Long) json.get("lng")).doubleValue(); } -// SerializablePosition position = new SerializablePositionImpl(latDeg, lngDeg); + SerializablePosition position = new SerializablePositionImpl(latDeg, lngDeg); long population = (Long) json.get("population"); if (name != null && lngDeg != null && latDeg != null) { - return new PlacemarkImpl(name, countryCode/*, position*/, population); + return new PlacemarkImpl(name, countryCode, position, population); } else { return null; } From 8d6bd32c034271efbb17a25fbc60e8eba02f7bd6 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Wed, 18 Jan 2012 14:39:48 +0100 Subject: [PATCH 11/11] Solved merge conflict --- .../common/impl/SerializablePositionImpl.java | 23 ++++--------------- 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java index 7a5e83e2aef..0feba772df2 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/SerializablePositionImpl.java @@ -29,17 +29,10 @@ public class SerializablePositionImpl implements SerializablePosition { @Override public int hashCode() { final int prime = 31; - int result = 1; -<<<<<<< HEAD - int temp = (int) latDeg; + int result = 1; + long temp = (int) latDeg; result = prime * result + (int) (temp ^ (temp >>> 32)); - temp = (int) lngDeg; -======= - long temp; - temp = (int) latDeg; - result = prime * result + (int) (temp ^ (temp >>> 32)); - temp = (int) latDeg; ->>>>>>> placemark + temp = (int) latDeg; result = prime * result + (int) (temp ^ (temp >>> 32)); return result; } @@ -52,16 +45,10 @@ public class SerializablePositionImpl implements SerializablePosition { return false; if (getClass() != obj.getClass()) return false; - SerializablePositionImpl other = (SerializablePositionImpl) obj; -<<<<<<< HEAD - if (new Double(latDeg).equals(other.latDeg)) - return false; - if (new Double(lngDeg).equals(other.lngDeg)) -======= + SerializablePositionImpl other = (SerializablePositionImpl) obj; if (!new Double(latDeg).equals(other.latDeg)) return false; - if (!new Double(lngDeg).equals(other.lngDeg)) ->>>>>>> placemark + if (!new Double(lngDeg).equals(other.lngDeg)) return false; return true; }