Merge branch 'master' of ssh://195.227.10.246/home/trac/git

This commit is contained in:
Simon Pamies committed 2011-06-16 09:38:01 +02:00
commit 962e49ad6a
58 files changed
+1182 -278

No files matched your search

+3 -5
View File
@@ -1,11 +1,7 @@
Axel Axel
==== ====
- What about distance traveled in first leg? It seems to jump too high at the beginning. - consolidate time point defaulting for servlet REST APIs
- Open test server firewall ports for UDP / Expedition wind integration
- test UDP ports
- Set up two Expedition machines with RF and UMTS transmission, test killing one - Set up two Expedition machines with RF and UMTS transmission, test killing one
@@ -13,6 +9,8 @@ Axel
- enable switching between our and TracTrac-provided leaderboard information - enable switching between our and TracTrac-provided leaderboard information
- implement missing pieces of TracTrac Result API-based TrackedLegOfCompetitor
- Pass final production instance URL information to BeTomorrow for wind integration - Pass final production instance URL information to BeTomorrow for wind integration
- Display gain/loss for next-best competitor (green/red arrow up/down) based on VMG comparison - Display gain/loss for next-best competitor (green/red arrow up/down) based on VMG comparison
+569 -1
View File
@@ -40,6 +40,8 @@ Inbound Port Assignments
80: apache 80: apache
5902: vnc 5902: vnc
8026: Python "dev" instance 8026: Python "dev" instance
....: Python "test" instance
....: Python "prod" instance
8886: servlet container of "dev" Java instance 8886: servlet container of "dev" Java instance
8887: servlet container of "test" Java instance 8887: servlet container of "test" Java instance
8888: servlet container of "prod1" Java instance 8888: servlet container of "prod1" Java instance
@@ -61,4 +63,570 @@ bundles that implement TracTrac connectivity, Expedition wind
connectivity, sailing domain knowledge, race tracking capabilities as connectivity, sailing domain knowledge, race tracking capabilities as
well as servlets with RESTful APIs for use by web clients. well as servlets with RESTful APIs for use by web clients.
The Most data is managed on the TracTrac servers. The only data currently
stored persistently by the Java component is the wind data received
through the supported channels. This helps in re-playing a race later
and understanding the wind conditions at the time which should support
fine-grained after-race analysis.
* Jetty
A Jetty servlet container runs embedded in Equinox. Servlets are
registered (currently in the com.sap.sailing.server bundle) using the
org.eclipse.equinox.http.registry.servlets extension point. See
com.sap.sailing.server/plugin.xml for the currently registered
servlets.
Static content to be provided by Jetty is also registered as an
"extension" for the org.eclipse.equinox.http.registry.resources
extension point. We have a few very simple forms registered that aid
in testing the web application provided by Jetty.
The port on which Jetty listens for incoming connections is configured
using the system / bundle property org.osgi.service.http.port.
* Binary Libraries
The Java component as of this writing has two bundles that wrap
binary libraries: com.tractrac.clientmodule and com.mongodb.driver.
* External Communications
The com.tractrac.clientmodule bundle is used to obtain data about
races / regattas and register for the corresponding live data
feeds. These feeds contain information about boat positions, race
course changes such as marks being moved, replaced or added, mark
positions, mark passings and race start/stop events.
To improve rankings and predictions, wind data is tracked by the Java
component. Wind can be fed through wind sources. Currently supported
are "WEB" and "EXPEDITION." The WEB wind source is a REST API by which
a single wind datum with optional position specification, time point,
wind bearing and speed can be provided. EXPEDITION uses a connector
bundle (com.sap.sailing.expeditionconnector) to receive wind data via
UDP from one or more Expedition instances.
The Expedition connector can listen on inbound UDP ports for messages
sent point-to-point or using UDP broadcast by the Expedition tool
which in turn receives its data from boat-mounted sensors and other
devices, such as the Nexus on-board system. Expedition enriches this
data and sends selected attributes over the network.
The connector understands the Expedition data feed format, supports
Expedition checksum verification and knows about the most important
attribute IDs such as true wind bearing, GPS time, latitude and
longitude.
* Storing Wind in MongoDB
The Java component piggy-backs on the MongoDB persistence solution
installed mainly for the Python server. Storing wind is helpful
particularly for post-race analysis and to support the case of a
re-start of the Java component(s) on the server, e.g., in case an
update or a quick-fix needs to be installed.
Since all other data can be reloaded from the TracTrac server, we
don't store that redundantly. But the wind information isn't retrieved
from TracTrac and hence needs to be stored on our server.
By default we use the database named "winddb". The MongoDB settings
can be configured using system / bundle properties:
mongo.port (default is 27017)
mongo.hostname (default is 127.0.0.1)
mongo.dbname (default is winddb)
* List of REST APIs and their parameters
The distribution of services across the /admin and /moderator servlet
is currently not well sorted out and requires some clean-up. The
general idea is to have administrative tasks accessible through the
/admin servlet whereas things that the moderator will see are accessed
through the /moderator servlet. We may want to consider merging both
into one in the future.
/admin
action=addevent
2014: wind input for "prod2" Java instance
Java
----
We use Equinox as an OSGi container into which we deploy a set of
bundles that implement TracTrac connectivity, Expedition wind
connectivity, sailing domain knowledge, race tracking capabilities as
well as servlets with RESTful APIs for use by web clients.
Most data is managed on the TracTrac servers. The only data currently
stored persistently by the Java component is the wind data received
through the supported channels. This helps in re-playing a race later
and understanding the wind conditions at the time which should support
fine-grained after-race analysis.
* Jetty
A Jetty servlet container runs embedded in Equinox. Servlets are
registered (currently in the com.sap.sailing.server bundle) using the
org.eclipse.equinox.http.registry.servlets extension point. See
com.sap.sailing.server/plugin.xml for the currently registered
servlets.
Static content to be provided by Jetty is also registered as an
"extension" for the org.eclipse.equinox.http.registry.resources
extension point. We have a few very simple forms registered that aid
in testing the web application provided by Jetty.
The port on which Jetty listens for incoming connections is configured
using the system / bundle property org.osgi.service.http.port.
* Binary Libraries
The Java component as of this writing has two bundles that wrap
binary libraries: com.tractrac.clientmodule and com.mongodb.driver.
* External Communications
The com.tractrac.clientmodule bundle is used to obtain data about
races / regattas and register for the corresponding live data
feeds. These feeds contain information about boat positions, race
course changes such as marks being moved, replaced or added, mark
positions, mark passings and race start/stop events.
To improve rankings and predictions, wind data is tracked by the Java
component. Wind can be fed through wind sources. Currently supported
are "WEB" and "EXPEDITION." The WEB wind source is a REST API by which
a single wind datum with optional position specification, time point,
wind bearing and speed can be provided. EXPEDITION uses a connector
bundle (com.sap.sailing.expeditionconnector) to receive wind data via
UDP from one or more Expedition instances.
The Expedition connector can listen on inbound UDP ports for messages
sent point-to-point or using UDP broadcast by the Expedition tool
which in turn receives its data from boat-mounted sensors and other
devices, such as the Nexus on-board system. Expedition enriches this
data and sends selected attributes over the network.
The connector understands the Expedition data feed format, supports
Expedition checksum verification and knows about the most important
attribute IDs such as true wind bearing, GPS time, latitude and
longitude.
For converting magnetic bearings to true bearings the
com.sap.sailing.declination bundle can talk to a web page at
http://www.ngdc.noaa.gov/geomagmodels/struts/calcDeclination. It is
possible to download and store declinations in a file shipped with the
bundle. The resources/ folder in the bundle's source holds files named
"declination-yyyy.txt" where "yyyy" represents the year of which the
file holds declination values. For 2011 there is a file that holds
declination values and annual change rates for a 1x1 degree grid. If
values of greater precision are requested, this may result in online
requests. After a timeout, interpolation/extrapolation based on the
known values and annual change rates is tried.
* Storing Wind in MongoDB
The Java component piggy-backs on the MongoDB persistence solution
installed mainly for the Python server. Storing wind is helpful
particularly for post-race analysis and to support the case of a
re-start of the Java component(s) on the server, e.g., in case an
update or a quick-fix needs to be installed.
Since all other data can be reloaded from the TracTrac server, we
don't store that redundantly. But the wind information isn't retrieved
from TracTrac and hence needs to be stored on our server.
By default we use the database named "winddb". The MongoDB settings
can be configured using system / bundle properties:
mongo.port (default is 27017)
mongo.hostname (default is 127.0.0.1)
mongo.dbname (default is winddb)
* List of REST APIs and their parameters
The distribution of services across the /admin and /moderator servlet
is currently not well sorted out and requires some clean-up. The
general idea is to have administrative tasks accessible through the
/admin servlet whereas things that the moderator will see are accessed
through the /moderator servlet. We may want to consider merging both
into one in the future.
/admin
action=addevent: starts tracking all races described in the document received
from the eventJSONURL to the server instance.
eventJSONURL: the URL from where metadata about the entire regatta
can be obtained; the resulting document includes the
parameter and simulation URLs for the individual
races that are part of the event/regatta.
liveURI: the live data URI for the TracTrac server
storedURI: the stored data URI for the TracTrac server; usually
the port number of this URI is that of liveURI + 1
action=stopevent: stops tracking of all races of the event; this
also stops all wind tracking for the races of the event
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
action=addrace: starts tracking a single race; if other races of
the same event/regatta are already being tracked,
the race is added to the event
paramURL: the URL from where metadata about the race
can be obtained; the resulting document includes
UUIDs of waypoints, competitors, etc.
liveURI: the live data URI for the TracTrac server
storedURI: the stored data URI for the TracTrac server; usually
the port number of this URI is that of liveURI + 1
action=stoprace: stops tracking of a single race, also stopping the
wind trackers that were started for this race; other
races of the same event that were being tracked will
continue being tracked.
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
racename: name of the race, as returned by the "listevents"
action on the /moderator servlet
action=receiveexpeditionwind: starts a wind tracker that receives
wind data through a UDP port from an Expedition
client; the wind is fed into a wind track for the
race specified by eventname/racename.
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
racename: name of the race, as returned by the "listevents"
action on the /moderator servlet
port: the UDP port on which to listen for incoming
Expedition messages
correctexpeditionwindbearingbydeclination: optional; if "true",
the wind bearings received from Expedition will be
corrected by the magnetic declination for the
time and location specified by the Expedition
message.
action=stopreceivingexpeditionwind: stops an expedition wind tracker
for the race specified by eventname/racename
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
racename: name of the race, as returned by the "listevents"
action on the /moderator servlet
action=listwindtrackers: lists all wind trackers currently
registered in the server instance. The output
structure is an array of {eventname,racename,port}
objects.
action=setwind: feeds a single wind measurement into the WEB
wind track of the race specified. If no time is
specified, the measurement is assumed to have been
taken at the current time.
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
racename: name of the race, as returned by the "listevents"
action on the /moderator servlet
truebearingdegrees: as the name suggests; can have decimal places
knotspeed: optional; as the name suggests; can have decimal
places. If omitted, 1kn is used as a default
latdeg/lngdeg: optional; latitude and longitude in degrees,
optionally with decimal places
time: optional; time stamp for the wind measurement
in ISO format in arbitrary precision; takes
precedence over a "timeasmillis" parameter.
Example values:
2011-05-27T13:27:19.283
2010-06-30
2011-08-01T15:44:00
timeasmillis: optional; time stamp for the wind measurement
in milliseconds since 1970-01-01T00:00:00 UTC
action=removewind: removes a single wind measurement with the
millisecond-exact time stamp again from the
specified race's specified wind source. A time
should be provided, although the current time
will be used as the default. However, it's
unlikely that this will match the time point
of the wind to remove by the millisecond.
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
racename: name of the race, as returned by the "listevents"
action on the /moderator servlet
sourcename: name of the wind source, such as WEB or EXPEDITION
time: time stamp for the wind measurement
in ISO format in arbitrary precision; takes
precedence over a "timeasmillis" parameter.
Example values:
2011-05-27T13:27:19.283
2010-06-30
2011-08-01T15:44:00
timeasmillis: time stamp for the wind measurement
in milliseconds since 1970-01-01T00:00:00 UTC
action=selectwindsource: selects the wind track to be used for
all computations for the race specified. This can
be used to switch, e.g., from EXPEDITION-provided
wind to manually or BeTomorrow-provided wind
information.
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
racename: name of the race, as returned by the "listevents"
action on the /moderator servlet
sourcename: name of the wind source, such as WEB or EXPEDITION
action=showwind: shows the wind tracks that exist for the race
specified. The output is a JSON object with the
following structure:
{ "currentwindsource": WEB|EXPEDITION,
[ "WEB": { "truebearingdeg": ...,
"knotspeed": ...,
"meterspersecondspeed": ...,
"timepoint": ... (optional, if time point is known),
"dampenedtruebearingdeg": ... (optional),
"dampenedknotspeed": ... (optional),
"dampenedmeterspersecondspeed": ... (optional)
"latdeg": ... (optional, if position known),
"lngdeg": ... (optional, if position known)
}
"EXPEDITION": { ... }
}
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
racename: name of the race, as returned by the "listevents"
action on the /moderator servlet
action=addwindtomarksforonehour: Can be used to translate one or
more positions in the direction and distance that
the wind blows at the position's location during
one hour. One use case is drawing the wind lines
through the mark positions. If no time point
is specified, the current time is used for the
wind lookup. The result is a JSON array with
objects of the following structure:
{ "markLatDeg": ..., // position provided
"markLngDeg": ..., // position provided
"windTrueBearingDeg": ..., // wind info
"windKnotSpeed": ..., // wind info
"toLatDeg": ..., // translated position
"toLngDeg" } // translated position
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
racename: name of the race, as returned by the "listevents"
action on the /moderator servlet
time: optional; time stamp for the wind measurement
in ISO format in arbitrary precision; takes
precedence over a "timeasmillis" parameter.
Example values:
2011-05-27T13:27:19.283
2010-06-30
2011-08-01T15:44:00
timeasmillis: optional; time stamp for the wind measurement
in milliseconds since 1970-01-01T00:00:00 UTC
latdeg/lngdeg: can occur multiple times with an equal number of
latdeg and lngdeg parameter occurrences. Specifies
the positions to be translated.
/moderator
action=listevents: shows the events with their races that are
currently being tracked by this server instance. The
result is a JSON array with entries describing the
events like this:
{ "name": ..., // event name
"boatclass": ..., // optional; name of boat class
"competitors": [ // the event's competitors
{ "name", ..., // competitor's name
"nationality": ...,
"team": [ { // the sailors forming the team
"name": ...,
"description": ... } ... ] } ... ]
"races": [ // list of races in the event
"name": ...,
"boatclass": ...,
"start": ..., // race start time as millisecond
// timestamp, Integer.MAX_VALUE
// if not started yet
"finish": ..., // optional; if race finish time
// is known, this is the
// milliseconds timestamp of
// when the race finished
"legs": [ { // legs in the course's order
"start": ..., // name of the leg start mark
"end": ... } // name of the leg end mark
... ]
... ]
action=[ // list of races in the event
"name": ...,
"boatclass": ...,
"start": ..., // race start time as millisecond
// timestamp, Integer.MAX_VALUE
// if not started yet
"finish": ..., // optional; if race finish time
// is known, this is the
// milliseconds timestamp of
// when the race finished
"legs": [ { // legs in the course's order
"start": ..., // name of the leg start mark
"end": ... } // name of the leg end mark
... ]
... ]
action=showboatpositions: outputs a JSON object describing the boats
with their positions for the race specified. Output
format:
{ "name": ..., // race name
"competitors": [ {
"name": ...,
"track": [ {
"timepoint": ..., // millisecond timestamp
"latdeg": ..., // boat position
"lngdeg": ...,
"truebearingdeg": ..., // true boat bearing in degrees
"knotspeed": ... } ... ] // boat speed in knots
} ... ] }
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
racename: name of the race, as returned by the "listevents"
action on the /moderator servlet
since/sinceasmillis: optional; ISO / milliseconds timestamp
describing the earliest time point for boat
positions to be returned; if not specified,
known boat positions are listed from the
"beginning of time"
to/toasmillis: optional; optional; ISO / milliseconds timestamp
describing the latest time point for boat
positions to be returned; if not specified,
known boat positions are listed until the
"end of time"
action=showwaypoints: shows the positions of a race's marks / buoys
at a specified point in time; if no time/timeasmillis
is provided, the race start time is used; if that is
not available, the start of tracking is used;
if that is not available either, the time point
of the newest event is used; if that is not
available, the current time is used. The output
is an array of JSON objects with following format each:
{ "name": ..., // waypoint name
"buoys": [ { // usually one or two buoys
"name": ..., // buoy name
"lat": ..., // optional; if buoy pos known
"lng": ... } ... ] } // optionsl; if buoy pos known
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
racename: name of the race, as returned by the "listevents"
action on the /moderator servlet
time: optional; time stamp for the wind measurement
in ISO format in arbitrary precision; takes
precedence over a "timeasmillis" parameter.
Example values:
2011-05-27T13:27:19.283
2010-06-30
2011-08-01T15:44:00
timeasmillis: optional; time stamp for the wind measurement
in milliseconds since 1970-01-01T00:00:00 UTC
action=showrace: shows lots of tracking information about a
tracked race at a given point in time. If no
time point is provided (time / timeasmillis),
the time point of the event received last is
used. If no such time point exists, the current
time is used. The output has the following
structure:
{ "name": ..., // race name
"startoftracking": ..., // millisecond timestamp
"start": ..., // millisecond timestamp
"finish": ..., // millisecond timestamp
"timeofnewestevent": ...,// greatest millisecond timestamp
// of any event received so far
"timeoflastevent": ..., // millisecond timestamp
// of the event received last
"updatecount": ..., // integer number telling
// the number of events
// received so far; a bit
// like a "transaction time"
"wind": { // optional, if wind set
"truebearingdeg": ...,
"knotspeed": ...,
"meterspersecondspeed": ...,
"source": ... },
"legs": [ { // leg tracking info per leg
"from": ..., // name of from-waypoint
"fromwaypointid": ..., // a unique integer for the
// from-waypoint
"to": ..., // name of to-waypoint
"towaypointid": ..., // a unique integer for the
// from-waypoint
"upordownwindleg": ...,// true or false
"competitors": [ { // competitor list
"name": ...,
// current SOG is optional
"currentSpeedOverGroundInKnots": ...,
"currentSpeedOverGroundInMetersPerSecond": ...,
// average SOG is optionsl
"averageSpeedOverGroundInKnots": ...,
"averageSpeedOverGroundInMetersPerSecond": ...,
// distance traveled is optional
"distanceTraveledOverGroundInMeters": ...,
// VMG info is optional
"velocityMadeGoodInKnots": ...,
"velocityMadeGoodInMetersPerSecond": ...,
"averageVelocityMadeGoodInKnots": ...,
"averageVelocityMadeGoodInMetersPerSecond": ...,
"rank": ..., // competitor's rank in this leg
"gapToLeaderInSeconds": ..., // optional, only if wind is known
"estimatedTimeToNextMarkInSeconds": ..., // optional, only if wind is known
"windwardDistanceToGoInMeters": ..., // optional, only if wind is known
"started": ..., // true or false, tells if competitor has started leg
"finished": ... // true of false, tells if competitor has finished leg
} ... ] // competitor's rank in leg
} ... ],
"ranks": [ { // the overall total ranks, across legs
"competitor": ..., // name of competitor
"rank": ... } ... ] }
eventname: name of the event, as returned by the "listevents"
action on the /moderator servlet
racename: name of the race, as returned by the "listevents"
action on the /moderator servlet
time: optional; time stamp for the wind measurement
in ISO format in arbitrary precision; takes
precedence over a "timeasmillis" parameter.
Example values:
2011-05-27T13:27:19.283
2010-06-30
2011-08-01T15:44:00
timeasmillis: optional; time stamp for the wind measurement
in milliseconds since 1970-01-01T00:00:00 UTC
sinceupdate: optional; an integer number that if provided,
causes the call to block on the server
until the update count returned will be greater
than the value provided for sinceupdate.
* Server Directory Structures
git/:
This is our git "hub" directory with checked-out workspace.
We use it also as the directory to check out a specific branch
that we want to build using Maven.
servers/:
The four Java server instances dev, test, prod1 and prod2 have their
directories here.
[dev|test|prod1|prod2]/
configuration/
config.ini: contains the set of initial bundles to launch upon
server start as well as bundle properties such as the
HTTP port to listen to and the mongo.port property
start: the start script used to launch the respective server instance
update: used to copy the built artifacts from the corresponding
maven-repositories/ subdirectory to the plugins/ subdirectory
plugins/: contains the JAR files for the server instance
maven-repositories/
[dev|test|prod]/: the target repositories for the "mvn deploy" tasks
for the respective git branch (dev|test|prod)
* Maven Environment
Our Java OSGi bundles are built and tested using the Apache Maven build system together
with the Tycho plugin for Maven. The bundles carrying the JUnit tests (typically ending
with *.test in their bundle name) are built using eclipse-test-plugin as packaging
type. The regular OSGi bundles are built using eclipse-plugin as packaging type.
When invoking "mvn install" in the ~trac/git/java directory, all bundles for the Java
server will be built and the tests will start to run. A report is printed at the end. If
it decides for "SUCCESS" then all builds and tests finished successfully. However, this
hasn't had any effect on any of the running servers, not even the maven repository.
For that, see the respective instructions in the ADMIN file located next to this README
file (search for "mvn deploy").
Python
------
TODO Simon to write a few warm words here...
@@ -74,7 +74,7 @@ import difflib.PatchFailedException;
public class DomainFactoryImpl implements DomainFactory { public class DomainFactoryImpl implements DomainFactory {
private static final Logger logger = Logger.getLogger(DomainFactoryImpl.class.getName()); private static final Logger logger = Logger.getLogger(DomainFactoryImpl.class.getName());
private final long millisecondsOverWhichToAverageSpeed = 15000; private final long millisecondsOverWhichToAverageSpeed = 40000; // makes for a 20s half-side interval
// TODO clarify how millisecondsOverWhichToAverageWind could be updated and propagated live // TODO clarify how millisecondsOverWhichToAverageWind could be updated and propagated live
private final long millisecondsOverWhichToAverageWind = 30000; private final long millisecondsOverWhichToAverageWind = 30000;
@@ -51,4 +51,13 @@ public class TracTracTrackedLegImpl implements TrackedLeg {
return false; return false;
} }
@Override
public Map<Competitor, Integer> getRanks(TimePoint timePoint) {
Map<Competitor, Integer> result = new HashMap<Competitor, Integer>();
for (Competitor c : getTrackedRace().getRace().getCompetitors()) {
result.put(c, getTrackedLeg(c).getRank(timePoint));
}
return result;
}
} }
@@ -9,6 +9,7 @@ import com.sap.sailing.domain.base.Position;
import com.sap.sailing.domain.base.Speed; import com.sap.sailing.domain.base.Speed;
import com.sap.sailing.domain.base.SpeedWithBearing; import com.sap.sailing.domain.base.SpeedWithBearing;
import com.sap.sailing.domain.base.TimePoint; import com.sap.sailing.domain.base.TimePoint;
import com.sap.sailing.domain.base.impl.DegreeBearingImpl;
import com.sap.sailing.domain.base.impl.KilometersPerHourSpeedImpl; import com.sap.sailing.domain.base.impl.KilometersPerHourSpeedImpl;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl; import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.base.impl.KnotSpeedWithBearingImpl; import com.sap.sailing.domain.base.impl.KnotSpeedWithBearingImpl;
@@ -126,8 +127,8 @@ public class TracTracTrackedLegOfCompetitor implements TrackedLegOfCompetitor {
@Override @Override
public Speed getVelocityMadeGood(TimePoint timePoint) throws NoWindException { public Speed getVelocityMadeGood(TimePoint timePoint) throws NoWindException {
// TODO Auto-generated method stub; problem: live VMG is not delivered by new ResultAPI return new KnotSpeedWithBearingImpl(getLiveResults(timePoint).getVmgAverage30s(),
return null; new DegreeBearingImpl(getLiveResults(timePoint).getHeading()));
} }
@Override @Override
@@ -1,5 +1,7 @@
package com.sap.sailing.domain.tracking; package com.sap.sailing.domain.tracking;
import java.util.Map;
import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.base.Leg;
import com.sap.sailing.domain.base.TimePoint; import com.sap.sailing.domain.base.TimePoint;
@@ -19,4 +21,15 @@ public interface TrackedLeg {
*/ */
boolean isUpOrDownwindLeg(TimePoint at) throws NoWindException; boolean isUpOrDownwindLeg(TimePoint at) throws NoWindException;
/**
* Computes the ranks of all competitors in this leg in one sweep. There are two advantages of this operation over
* the more fine-grained {@link TrackedLegOfCompetitor#getRank(TimePoint)}:
* <ol>
* <li>all ranks are available in one call</li>
* <li>no incoming events can influence ranks between separate calls to
* {@link TrackedLegOfCompetitor#getRank(TimePoint)}</li>
* </ol>
*/
Map<Competitor, Integer> getRanks(TimePoint timePoint);
} }
@@ -1,7 +1,9 @@
package com.sap.sailing.domain.tracking.impl; package com.sap.sailing.domain.tracking.impl;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet; import java.util.TreeSet;
import com.sap.sailing.domain.base.Bearing; import com.sap.sailing.domain.base.Bearing;
@@ -25,7 +27,7 @@ public class TrackedLegImpl implements TrackedLeg, RaceChangeListener<Competitor
private final Leg leg; private final Leg leg;
private final Map<Competitor, TrackedLegOfCompetitor> trackedLegsOfCompetitors; private final Map<Competitor, TrackedLegOfCompetitor> trackedLegsOfCompetitors;
private TrackedRaceImpl trackedRace; private TrackedRaceImpl trackedRace;
private final Map<TimePoint, TreeSet<TrackedLegOfCompetitor>> competitorTracksOrderedByRank; private final Map<TimePoint, SortedSet<TrackedLegOfCompetitor>> competitorTracksOrderedByRank;
public TrackedLegImpl(DynamicTrackedRaceImpl trackedRace, Leg leg, Iterable<Competitor> competitors) { public TrackedLegImpl(DynamicTrackedRaceImpl trackedRace, Leg leg, Iterable<Competitor> competitors) {
super(); super();
@@ -36,7 +38,7 @@ public class TrackedLegImpl implements TrackedLeg, RaceChangeListener<Competitor
trackedLegsOfCompetitors.put(competitor, new TrackedLegOfCompetitorImpl(this, competitor)); trackedLegsOfCompetitors.put(competitor, new TrackedLegOfCompetitorImpl(this, competitor));
} }
trackedRace.addListener(this); trackedRace.addListener(this);
competitorTracksOrderedByRank = new HashMap<TimePoint, TreeSet<TrackedLegOfCompetitor>>(); competitorTracksOrderedByRank = new HashMap<TimePoint, SortedSet<TrackedLegOfCompetitor>>();
} }
@Override @Override
@@ -60,7 +62,7 @@ public class TrackedLegImpl implements TrackedLeg, RaceChangeListener<Competitor
} }
protected Competitor getLeader(TimePoint timePoint) { protected Competitor getLeader(TimePoint timePoint) {
TreeSet<TrackedLegOfCompetitor> byRank = getCompetitorTracksOrderedByRank(timePoint); SortedSet<TrackedLegOfCompetitor> byRank = getCompetitorTracksOrderedByRank(timePoint);
return byRank.first().getCompetitor(); return byRank.first().getCompetitor();
} }
@@ -74,19 +76,29 @@ public class TrackedLegImpl implements TrackedLeg, RaceChangeListener<Competitor
* Note that this does not reflect overall race standings. For that, the ordering would have to * Note that this does not reflect overall race standings. For that, the ordering would have to
* consider the order of the boats not currently in this leg, too. * consider the order of the boats not currently in this leg, too.
*/ */
protected TreeSet<TrackedLegOfCompetitor> getCompetitorTracksOrderedByRank(TimePoint timePoint) { protected SortedSet<TrackedLegOfCompetitor> getCompetitorTracksOrderedByRank(TimePoint timePoint) {
synchronized (competitorTracksOrderedByRank) { synchronized (competitorTracksOrderedByRank) {
TreeSet<TrackedLegOfCompetitor> treeSet = competitorTracksOrderedByRank.get(timePoint); SortedSet<TrackedLegOfCompetitor> treeSet = competitorTracksOrderedByRank.get(timePoint);
if (treeSet == null) { if (treeSet == null) {
treeSet = new TreeSet<TrackedLegOfCompetitor>(new WindwardToGoComparator(this, timePoint)); treeSet = new TreeSet<TrackedLegOfCompetitor>(new WindwardToGoComparator(this, timePoint));
for (TrackedLegOfCompetitor competitorLeg : getTrackedLegsOfCompetitors()) { for (TrackedLegOfCompetitor competitorLeg : getTrackedLegsOfCompetitors()) {
treeSet.add(competitorLeg); treeSet.add(competitorLeg);
} }
competitorTracksOrderedByRank.put(timePoint, treeSet); competitorTracksOrderedByRank.put(timePoint, Collections.unmodifiableSortedSet(treeSet));
} }
return treeSet; return treeSet;
} }
} }
@Override
public Map<Competitor, Integer> getRanks(TimePoint timePoint) {
SortedSet<TrackedLegOfCompetitor> orderedTrackedLegsOfCompetitors = getCompetitorTracksOrderedByRank(timePoint);
Map<Competitor, Integer> result = new HashMap<Competitor, Integer>();
for (TrackedLegOfCompetitor tloc : orderedTrackedLegsOfCompetitors) {
result.put(tloc.getCompetitor(), orderedTrackedLegsOfCompetitors.headSet(tloc).size()+1);
}
return result;
}
@Override @Override
public boolean isUpOrDownwindLeg(TimePoint at) throws NoWindException { public boolean isUpOrDownwindLeg(TimePoint at) throws NoWindException {
@@ -116,6 +128,10 @@ public class TrackedLegImpl implements TrackedLeg, RaceChangeListener<Competitor
getLeg().getFrom().getBuoys().iterator().next()).getEstimatedPosition(at, false); getLeg().getFrom().getBuoys().iterator().next()).getEstimatedPosition(at, false);
Position approximateLegEndPosition = getTrackedRace().getTrack( Position approximateLegEndPosition = getTrackedRace().getTrack(
getLeg().getTo().getBuoys().iterator().next()).getEstimatedPosition(at, false); getLeg().getTo().getBuoys().iterator().next()).getEstimatedPosition(at, false);
if (approximateLegStartPosition == null || approximateLegEndPosition == null) {
throw new RuntimeException("No mark positions received yet for leg "+getLeg()+
". Can't determine wind direction since position is not known.");
}
Wind wind = getWind( Wind wind = getWind(
approximateLegStartPosition.translateGreatCircle(approximateLegStartPosition.getBearingGreatCircle(approximateLegEndPosition), approximateLegStartPosition.translateGreatCircle(approximateLegStartPosition.getBearingGreatCircle(approximateLegEndPosition),
approximateLegStartPosition.getDistance(approximateLegEndPosition).scale(0.5)), at); approximateLegStartPosition.getDistance(approximateLegEndPosition).scale(0.5)), at);
@@ -1,7 +1,7 @@
package com.sap.sailing.domain.tracking.impl; package com.sap.sailing.domain.tracking.impl;
import java.util.Iterator; import java.util.Iterator;
import java.util.TreeSet; import java.util.SortedSet;
import com.sap.sailing.domain.base.Bearing; import com.sap.sailing.domain.base.Bearing;
import com.sap.sailing.domain.base.Buoy; import com.sap.sailing.domain.base.Buoy;
@@ -244,7 +244,7 @@ public class TrackedLegOfCompetitorImpl implements TrackedLegOfCompetitor {
@Override @Override
public int getRank(TimePoint timePoint) { public int getRank(TimePoint timePoint) {
TreeSet<TrackedLegOfCompetitor> competitorTracksByRank = getTrackedLeg().getCompetitorTracksOrderedByRank(timePoint); SortedSet<TrackedLegOfCompetitor> competitorTracksByRank = getTrackedLeg().getCompetitorTracksOrderedByRank(timePoint);
return competitorTracksByRank.headSet(this).size()+1; return competitorTracksByRank.headSet(this).size()+1;
} }
@@ -127,7 +127,7 @@ public class UDPExpeditionReceiver implements Runnable {
// by subtracting the last diff from now // by subtracting the last diff from now
defaultForMessageTimePoint = new MillisecondsTimePoint(now - diff); defaultForMessageTimePoint = new MillisecondsTimePoint(now - diff);
} else { } else {
defaultForMessageTimePoint = MillisecondsTimePoint.now(); defaultForMessageTimePoint = null;
} }
for (int i = 0; i < variablesAndValuesInterleaved.length; i++) { for (int i = 0; i < variablesAndValuesInterleaved.length; i++) {
int variableID = Integer.valueOf(variablesAndValuesInterleaved[i++]); int variableID = Integer.valueOf(variablesAndValuesInterleaved[i++]);
@@ -136,7 +136,12 @@ public class UDPExpeditionReceiver implements Runnable {
} }
int checksum = Integer.valueOf(m.group(m.groupCount()), 16); int checksum = Integer.valueOf(m.group(m.groupCount()), 16);
valid = valid && checksumOk(checksum, packetAsString); valid = valid && checksumOk(checksum, packetAsString);
ExpeditionMessageImpl result = new ExpeditionMessageImpl(boatID, values, valid, defaultForMessageTimePoint); ExpeditionMessageImpl result;
if (defaultForMessageTimePoint == null) {
result = new ExpeditionMessageImpl(boatID, values, valid);
} else {
result = new ExpeditionMessageImpl(boatID, values, valid, defaultForMessageTimePoint);
}
if (result.hasValue(ExpeditionMessage.ID_GPS_TIME)) { if (result.hasValue(ExpeditionMessage.ID_GPS_TIME)) {
// an original GPS time stamp; then remember the difference between now and the time stamp // an original GPS time stamp; then remember the difference between now and the time stamp
timeStampOfLastMessageReceived.put(boatID, now-result.getTimePoint().asMillis()); timeStampOfLastMessageReceived.put(boatID, now-result.getTimePoint().asMillis());
@@ -21,9 +21,9 @@
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dorg.osgi.service.http.port=8888"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dorg.osgi.service.http.port=8888"/>
<stringAttribute key="pde.version" value="3.3"/> <stringAttribute key="pde.version" value="3.3"/>
<booleanAttribute key="show_selected_only" value="false"/> <booleanAttribute key="show_selected_only" value="false"/>
<stringAttribute key="target_bundles" value="org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.common@2:true,org.apache.ant@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services@default:default,javax.servlet@default:default,org.eclipse.core.jobs@default:default,org.mortbay.jetty.util@default:default,org.apache.commons.logging@default:default,org.eclipse.equinox.http.registry@default:default,org.junit4@default:default,org.junit*4.8.1.v4_8_1_v20100427-1100@default:default,org.eclipse.equinox.http.jetty@default:default,org.mortbay.jetty.server@default:default,org.hamcrest.core@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.osgi.util@default:default,org.junit*3.8.2.v3_8_2_v20100427-1100@default:default,javax.servlet.jsp@default:default,org.apache.commons.el@default:default,org.eclipse.osgi@-1:true,org.apache.jasper@default:default"/> <stringAttribute key="target_bundles" value="javax.servlet.jsp@default:default,javax.servlet@default:default,org.apache.ant@default:default,org.apache.commons.el@default:default,org.apache.commons.logging@default:default,org.apache.jasper@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.common@2:true,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.junit*3.8.2.v3_8_2_v20100427-1100@default:default,org.junit4@default:default,org.mortbay.jetty.server@default:default,org.mortbay.jetty.util@default:default"/>
<booleanAttribute key="tracing" value="false"/> <booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/> <booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfigArea" value="true"/> <booleanAttribute key="useDefaultConfigArea" value="true"/>
<stringAttribute key="workspace_bundles" value="com.googlecode.java-diff-utils.test@default:default,com.sap.sailing.expeditionconnector.test@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.server@default:default,com.sap.sailing.declination.test@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.domain.test@default:default,com.tractrac.resultapi@default:default,com.sap.sailing.mongodb.test@default:default,org.json.simple@default:default,com.tractrac.clientmodule@default:default"/> <stringAttribute key="workspace_bundles" value="com.googlecode.java-diff-utils.test@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination.test@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.test@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@default:default,com.sap.sailing.expeditionconnector.test@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.mongodb.test@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.server.test@default:default,com.sap.sailing.server@default:default,com.tractrac.clientmodule@default:default,com.tractrac.resultapi@default:default,org.json.simple@default:default"/>
</launchConfiguration> </launchConfiguration>
@@ -2,6 +2,7 @@ package com.sap.sailing.server;
import java.io.IOException; import java.io.IOException;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -108,7 +109,7 @@ public class ModeratorApp extends Servlet {
JSONObject jsonFix = new JSONObject(); JSONObject jsonFix = new JSONObject();
jsonFix.put("timepoint", fix.getTimePoint().asMillis()); jsonFix.put("timepoint", fix.getTimePoint().asMillis());
jsonFix.put("latdeg", fix.getPosition().getLatDeg()); jsonFix.put("latdeg", fix.getPosition().getLatDeg());
jsonFix.put("lngdev", fix.getPosition().getLngDeg()); jsonFix.put("lngdeg", fix.getPosition().getLngDeg());
jsonFix.put("truebearingdeg", fix.getSpeed().getBearing().getDegrees()); jsonFix.put("truebearingdeg", fix.getSpeed().getBearing().getDegrees());
jsonFix.put("knotspeed", fix.getSpeed().getKnots()); jsonFix.put("knotspeed", fix.getSpeed().getKnots());
jsonFixes.add(jsonFix); jsonFixes.add(jsonFix);
@@ -232,6 +233,7 @@ public class ModeratorApp extends Servlet {
jsonLeg.put("upordownwindleg", "false"); jsonLeg.put("upordownwindleg", "false");
} }
JSONArray jsonCompetitors = new JSONArray(); JSONArray jsonCompetitors = new JSONArray();
Map<Competitor, Integer> ranks = leg.getRanks(timePoint);
for (Competitor competitor : event.getCompetitors()) { for (Competitor competitor : event.getCompetitors()) {
JSONObject jsonCompetitorInLeg = new JSONObject(); JSONObject jsonCompetitorInLeg = new JSONObject();
TrackedLegOfCompetitor trackedLegOfCompetitor = leg.getTrackedLeg(competitor); TrackedLegOfCompetitor trackedLegOfCompetitor = leg.getTrackedLeg(competitor);
@@ -278,7 +280,7 @@ public class ModeratorApp extends Servlet {
// well, we don't know the wind direction... then no average VMG will be shown... // well, we don't know the wind direction... then no average VMG will be shown...
} }
try { try {
jsonCompetitorInLeg.put("rank", trackedLegOfCompetitor.getRank(timePoint)); jsonCompetitorInLeg.put("rank", ranks.get(competitor));
} catch (RuntimeException re) { } catch (RuntimeException re) {
if (re.getCause() != null && re.getCause() instanceof NoWindException) { if (re.getCause() != null && re.getCause() instanceof NoWindException) {
// well, we don't know the wind direction, so we can't compute a ranking // well, we don't know the wind direction, so we can't compute a ranking
@@ -362,8 +364,12 @@ public class ModeratorApp extends Servlet {
JSONObject jsonRace = new JSONObject(); JSONObject jsonRace = new JSONObject();
jsonRace.put("name", race.getName()); jsonRace.put("name", race.getName());
jsonRace.put("boatclass", race.getBoatClass()==null?"":race.getBoatClass().getName()); jsonRace.put("boatclass", race.getBoatClass()==null?"":race.getBoatClass().getName());
TimePoint start = getService().getDomainFactory().getTrackedEvent(event).getTrackedRace(race).getStart(); TrackedRace trackedRace = getService().getDomainFactory().getOrCreateTrackedEvent(event).getTrackedRace(race);
TimePoint start = trackedRace.getStart();
jsonRace.put("start", start==null?Long.MAX_VALUE:start.asMillis()); jsonRace.put("start", start==null?Long.MAX_VALUE:start.asMillis());
if (trackedRace.getFinish() != null) {
jsonRace.put("finish", trackedRace.getFinish().asMillis());
}
JSONArray jsonLegs = new JSONArray(); JSONArray jsonLegs = new JSONArray();
for (Leg leg : race.getCourse().getLegs()) { for (Leg leg : race.getCourse().getLegs()) {
JSONObject jsonLeg = new JSONObject(); JSONObject jsonLeg = new JSONObject();
@@ -371,13 +377,6 @@ public class ModeratorApp extends Servlet {
jsonLeg.put("end", leg.getTo().getName()); jsonLeg.put("end", leg.getTo().getName());
jsonLegs.add(jsonLeg); jsonLegs.add(jsonLeg);
} }
TrackedRace trackedRace = getService().getDomainFactory().getOrCreateTrackedEvent(event).getTrackedRace(race);
if (trackedRace.getStart() != null) {
jsonRace.put("start", trackedRace.getStart().asMillis());
}
if (trackedRace.getFinish() != null) {
jsonRace.put("finish", trackedRace.getFinish().asMillis());
}
jsonRace.put("legs", jsonLegs); jsonRace.put("legs", jsonLegs);
jsonRaces.add(jsonRace); jsonRaces.add(jsonRace);
} }
+5 -1
View File
@@ -2,7 +2,11 @@
<classpath> <classpath>
<classpathentry exported="true" kind="lib" path="lib/TracClientLib.jar"/> <classpathentry exported="true" kind="lib" path="lib/TracClientLib.jar"/>
<classpathentry exported="true" kind="lib" path="lib/TracClientSail.jar"/> <classpathentry exported="true" kind="lib" path="lib/TracClientSail.jar"/>
<classpathentry exported="true" kind="lib" path="lib/TracResultAPI.jar"/> <classpathentry exported="true" kind="lib" path="lib/TracResultAPI.jar">
<attributes>
<attribute name="javadoc_location" value="file:/C:/data/SAP/sailing/workspace/java/com.tractrac.resultapi/javadoc/"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
All Classes (TracTrac Result API) All Classes (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
All Classes (TracTrac Result API) All Classes (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
LiveResult (TracTrac Result API) LiveResult (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+88 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
LiveResultItem (TracTrac Result API) LiveResultItem (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
@@ -264,6 +264,22 @@ Class representing a competitor at any given point in time, including informatio
</TR> </TR>
<TR BGCOLOR="white" CLASS="TableRowColor"> <TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;double</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/LiveResultItem.html#getVmg()">getVmg</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get VMG in knots measured at a point</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;double</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/LiveResultItem.html#getVmgAverage30s()">getVmgAverage30s</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the in knots VMG averaged over 30 seconds</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD> <CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/LiveResultItem.html#isHasFinished()">isHasFinished</A></B>()</CODE> <TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/LiveResultItem.html#isHasFinished()">isHasFinished</A></B>()</CODE>
@@ -399,6 +415,22 @@ Class representing a competitor at any given point in time, including informatio
<BR> <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the UUID of the competitor</TD> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the UUID of the competitor</TD>
</TR> </TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/LiveResultItem.html#setVmg(double)">setVmg</A></B>(double&nbsp;vmg)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set VMG in knots measured at a point</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/LiveResultItem.html#setVmgAverage30s(double)">setVmgAverage30s</A></B>(double&nbsp;vmgAverage30s)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the VMG in knots averaged over 30 seconds</TD>
</TR>
</TABLE> </TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A> &nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
@@ -883,6 +915,60 @@ public void <B>setLongitude</B>(double&nbsp;longitude)</PRE>
<DT><B>Parameters:</B><DD><CODE>longitude</CODE> - set the longitude of the competitor in (degrees).(decimal degrees)</DL> <DT><B>Parameters:</B><DD><CODE>longitude</CODE> - set the longitude of the competitor in (degrees).(decimal degrees)</DL>
</DD> </DD>
</DL> </DL>
<HR>
<A NAME="getVmg()"><!-- --></A><H3>
getVmg</H3>
<PRE>
public double <B>getVmg</B>()</PRE>
<DL>
<DD>Get VMG in knots measured at a point
<P>
<DD><DL>
<DT><B>Returns:</B><DD>the vmg</DL>
</DD>
</DL>
<HR>
<A NAME="setVmg(double)"><!-- --></A><H3>
setVmg</H3>
<PRE>
public void <B>setVmg</B>(double&nbsp;vmg)</PRE>
<DL>
<DD>Set VMG in knots measured at a point
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>vmg</CODE> - the vmg to set</DL>
</DD>
</DL>
<HR>
<A NAME="getVmgAverage30s()"><!-- --></A><H3>
getVmgAverage30s</H3>
<PRE>
public double <B>getVmgAverage30s</B>()</PRE>
<DL>
<DD>Get the in knots VMG averaged over 30 seconds
<P>
<DD><DL>
<DT><B>Returns:</B><DD>the vmgAverage30s</DL>
</DD>
</DL>
<HR>
<A NAME="setVmgAverage30s(double)"><!-- --></A><H3>
setVmgAverage30s</H3>
<PRE>
public void <B>setVmgAverage30s</B>(double&nbsp;vmgAverage30s)</PRE>
<DL>
<DD>Set the VMG in knots averaged over 30 seconds
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>vmgAverage30s</CODE> - the vmgAverage30s to set</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= --> <!-- ========= END OF CLASS DATA ========= -->
<HR> <HR>
+132 -10
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
MarkResult (TracTrac Result API) MarkResult (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
@@ -76,9 +76,9 @@ function windowTitle()
</TR> </TR>
<TR> <TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD> SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD> DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR> </TR>
</TABLE> </TABLE>
<A NAME="skip-navbar_top"></A> <A NAME="skip-navbar_top"></A>
@@ -108,7 +108,48 @@ The resultlist for a specific mark for a specific class.
<HR> <HR>
<P> <P>
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_DOWNWIND">LEGTYPE_DOWNWIND</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_REACHING">LEGTYPE_REACHING</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_UNKNOWN">LEGTYPE_UNKNOWN</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_UPWIND">LEGTYPE_UPWIND</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== --> <!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A> <A NAME="constructor_summary"><!-- --></A>
@@ -118,10 +159,11 @@ The resultlist for a specific mark for a specific class.
<B>Constructor Summary</B></FONT></TH> <B>Constructor Summary</B></FONT></TH>
</TR> </TR>
<TR BGCOLOR="white" CLASS="TableRowColor"> <TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/MarkResult.html#MarkResult(java.util.List, com.maptrack.client.data.EventClass, com.tractrac.ResultAPI.MarkResult, com.maptrack.client.data.ControlPoint)">MarkResult</A></B>(java.util.List&lt;com.maptrack.client.data.CompetitorMarkPassInfo&gt;&nbsp;markPassInfo, <TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/MarkResult.html#MarkResult(java.util.List, com.maptrack.client.data.EventClass, com.tractrac.ResultAPI.MarkResult, com.maptrack.client.data.ControlPoint, double)">MarkResult</A></B>(java.util.List&lt;com.maptrack.client.data.CompetitorMarkPassInfo&gt;&nbsp;markPassInfo,
com.maptrack.client.data.EventClass&nbsp;eventClass, com.maptrack.client.data.EventClass&nbsp;eventClass,
<A HREF="../../../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>&nbsp;previousMark, <A HREF="../../../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>&nbsp;previousMark,
com.maptrack.client.data.ControlPoint&nbsp;cp)</CODE> com.maptrack.client.data.ControlPoint&nbsp;cp,
double&nbsp;legDirection)</CODE>
<BR> <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor for the MarkResult.</TD> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor for the MarkResult.</TD>
@@ -162,6 +204,14 @@ The resultlist for a specific mark for a specific class.
</TR> </TR>
<TR BGCOLOR="white" CLASS="TableRowColor"> <TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/MarkResult.html#getLegType()">getLegType</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the type of leg: LEGTYPE_UPWIND, LEGTYPE_DOWNWIND, LEGTYPE_REACHING or LEGTYPE_UNKNOWN.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD> <CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/MarkResult.html#getMarkName()">getMarkName</A></B>()</CODE> <TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/MarkResult.html#getMarkName()">getMarkName</A></B>()</CODE>
@@ -205,6 +255,55 @@ The resultlist for a specific mark for a specific class.
&nbsp; &nbsp;
<P> <P>
<!-- ============ FIELD DETAIL =========== -->
<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="LEGTYPE_UNKNOWN"><!-- --></A><H3>
LEGTYPE_UNKNOWN</H3>
<PRE>
public static final int <B>LEGTYPE_UNKNOWN</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.tractrac.ResultAPI.MarkResult.LEGTYPE_UNKNOWN">Constant Field Values</A></DL>
</DL>
<HR>
<A NAME="LEGTYPE_UPWIND"><!-- --></A><H3>
LEGTYPE_UPWIND</H3>
<PRE>
public static final int <B>LEGTYPE_UPWIND</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.tractrac.ResultAPI.MarkResult.LEGTYPE_UPWIND">Constant Field Values</A></DL>
</DL>
<HR>
<A NAME="LEGTYPE_DOWNWIND"><!-- --></A><H3>
LEGTYPE_DOWNWIND</H3>
<PRE>
public static final int <B>LEGTYPE_DOWNWIND</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.tractrac.ResultAPI.MarkResult.LEGTYPE_DOWNWIND">Constant Field Values</A></DL>
</DL>
<HR>
<A NAME="LEGTYPE_REACHING"><!-- --></A><H3>
LEGTYPE_REACHING</H3>
<PRE>
public static final int <B>LEGTYPE_REACHING</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.tractrac.ResultAPI.MarkResult.LEGTYPE_REACHING">Constant Field Values</A></DL>
</DL>
<!-- ========= CONSTRUCTOR DETAIL ======== --> <!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A> <A NAME="constructor_detail"><!-- --></A>
@@ -215,13 +314,14 @@ The resultlist for a specific mark for a specific class.
</TR> </TR>
</TABLE> </TABLE>
<A NAME="MarkResult(java.util.List, com.maptrack.client.data.EventClass, com.tractrac.ResultAPI.MarkResult, com.maptrack.client.data.ControlPoint)"><!-- --></A><H3> <A NAME="MarkResult(java.util.List, com.maptrack.client.data.EventClass, com.tractrac.ResultAPI.MarkResult, com.maptrack.client.data.ControlPoint, double)"><!-- --></A><H3>
MarkResult</H3> MarkResult</H3>
<PRE> <PRE>
public <B>MarkResult</B>(java.util.List&lt;com.maptrack.client.data.CompetitorMarkPassInfo&gt;&nbsp;markPassInfo, public <B>MarkResult</B>(java.util.List&lt;com.maptrack.client.data.CompetitorMarkPassInfo&gt;&nbsp;markPassInfo,
com.maptrack.client.data.EventClass&nbsp;eventClass, com.maptrack.client.data.EventClass&nbsp;eventClass,
<A HREF="../../../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>&nbsp;previousMark, <A HREF="../../../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>&nbsp;previousMark,
com.maptrack.client.data.ControlPoint&nbsp;cp)</PRE> com.maptrack.client.data.ControlPoint&nbsp;cp,
double&nbsp;legDirection)</PRE>
<DL> <DL>
<DD>Constructor for the MarkResult. <DD>Constructor for the MarkResult.
<br><br><b>NOTE: Constructor is normally not used by API customers.</b> <br><br><b>NOTE: Constructor is normally not used by API customers.</b>
@@ -336,6 +436,28 @@ public java.lang.String <B>getMarkShortName</B>()</PRE>
<DT><B>Returns:</B><DD>the short name of the mark the list is generated for</DL> <DT><B>Returns:</B><DD>the short name of the mark the list is generated for</DL>
</DD> </DD>
</DL> </DL>
<HR>
<A NAME="getLegType()"><!-- --></A><H3>
getLegType</H3>
<PRE>
public int <B>getLegType</B>()</PRE>
<DL>
<DD>Get the type of leg: LEGTYPE_UPWIND, LEGTYPE_DOWNWIND, LEGTYPE_REACHING or LEGTYPE_UNKNOWN.
<p>
Note that legtype isn't entered as part of the course defination, but calculated using the following logic:
<ul>
<li>First leg is considered an upwind leg</li>
<li>Leg +/- 22.5 degrees compared to first leg are also considered upwind</li>
<li>Legs 180 +/- 22.5 degress compared to the first leg are considered downwind</li>
<li>All other legs are considered reaching</li>
</p>
<P>
<DD><DL>
<DT><B>Returns:</B><DD>the legType as an int</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= --> <!-- ========= END OF CLASS DATA ========= -->
<HR> <HR>
@@ -387,9 +509,9 @@ public java.lang.String <B>getMarkShortName</B>()</PRE>
</TR> </TR>
<TR> <TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD> SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD> DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR> </TR>
</TABLE> </TABLE>
<A NAME="skip-navbar_bottom"></A> <A NAME="skip-navbar_bottom"></A>
+5 -5
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
MarkResultItem (TracTrac Result API) MarkResultItem (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
@@ -720,7 +720,7 @@ public double <B>getSOG</B>()</PRE>
<P> <P>
<DD><DL> <DD><DL>
<DT><B>Returns:</B><DD>the speed over ground (SOG) as measured by distance / time. NaN is returned for the start mark.</DL> <DT><B>Returns:</B><DD>the speed over ground (SOG) in knots as measured by distance / time. NaN is returned for the start mark.</DL>
</DD> </DD>
</DL> </DL>
<HR> <HR>
@@ -747,7 +747,7 @@ public double <B>getVMG</B>()</PRE>
<P> <P>
<DD><DL> <DD><DL>
<DT><B>Returns:</B><DD>the VMG (velocity made good) measured as distance between marks / time used on leg. NaN is returned for the start mark.</DL> <DT><B>Returns:</B><DD>the VMG (velocity made good) in knots measured as distance between marks / time used on leg. NaN is returned for the start mark.</DL>
</DD> </DD>
</DL> </DL>
<HR> <HR>
@@ -774,7 +774,7 @@ public double <B>getTopspeed</B>()</PRE>
<P> <P>
<DD><DL> <DD><DL>
<DT><B>Returns:</B><DD>the topspeed measured over 10 seconds. NaN is returned for the start mark.</DL> <DT><B>Returns:</B><DD>the topspeed measured over 10 seconds in km/h. NaN is returned for the start mark.</DL>
</DD> </DD>
</DL> </DL>
<HR> <HR>
+8 -6
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
PerLegResult (TracTrac Result API) PerLegResult (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
@@ -118,9 +118,10 @@ A result for one class for all marks
<B>Constructor Summary</B></FONT></TH> <B>Constructor Summary</B></FONT></TH>
</TR> </TR>
<TR BGCOLOR="white" CLASS="TableRowColor"> <TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/PerLegResult.html#PerLegResult(com.maptrack.client.gui.IProgressDataGetter, com.maptrack.client.data.ClientEventRaceData, com.maptrack.client.data.EventClass)">PerLegResult</A></B>(com.maptrack.client.gui.IProgressDataGetter&nbsp;pdg, <TD><CODE><B><A HREF="../../../com/tractrac/ResultAPI/PerLegResult.html#PerLegResult(com.maptrack.client.gui.IProgressDataGetter, com.maptrack.client.data.ClientEventRaceData, com.maptrack.client.data.EventClass, com.maptrack.clientsail.data.BoatRaceData)">PerLegResult</A></B>(com.maptrack.client.gui.IProgressDataGetter&nbsp;pdg,
com.maptrack.client.data.ClientEventRaceData&nbsp;erd, com.maptrack.client.data.ClientEventRaceData&nbsp;erd,
com.maptrack.client.data.EventClass&nbsp;eventClass)</CODE> com.maptrack.client.data.EventClass&nbsp;eventClass,
com.maptrack.clientsail.data.BoatRaceData&nbsp;brd)</CODE>
<BR> <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The constructer for the PerLegResult.</TD> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The constructer for the PerLegResult.</TD>
@@ -198,12 +199,13 @@ A result for one class for all marks
</TR> </TR>
</TABLE> </TABLE>
<A NAME="PerLegResult(com.maptrack.client.gui.IProgressDataGetter, com.maptrack.client.data.ClientEventRaceData, com.maptrack.client.data.EventClass)"><!-- --></A><H3> <A NAME="PerLegResult(com.maptrack.client.gui.IProgressDataGetter, com.maptrack.client.data.ClientEventRaceData, com.maptrack.client.data.EventClass, com.maptrack.clientsail.data.BoatRaceData)"><!-- --></A><H3>
PerLegResult</H3> PerLegResult</H3>
<PRE> <PRE>
public <B>PerLegResult</B>(com.maptrack.client.gui.IProgressDataGetter&nbsp;pdg, public <B>PerLegResult</B>(com.maptrack.client.gui.IProgressDataGetter&nbsp;pdg,
com.maptrack.client.data.ClientEventRaceData&nbsp;erd, com.maptrack.client.data.ClientEventRaceData&nbsp;erd,
com.maptrack.client.data.EventClass&nbsp;eventClass)</PRE> com.maptrack.client.data.EventClass&nbsp;eventClass,
com.maptrack.clientsail.data.BoatRaceData&nbsp;brd)</PRE>
<DL> <DL>
<DD>The constructer for the PerLegResult. <DD>The constructer for the PerLegResult.
<br><b>Note: Normally not called by API users</b> <br><b>Note: Normally not called by API users</b>
+3 -3
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
ResultGenerator (TracTrac Result API) ResultGenerator (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
@@ -286,7 +286,7 @@ public void <B>recalcuateWithWind</B>(long&nbsp;timems,
</ul> </ul>
<P> <P>
<DD><DL> <DD><DL>
<DT><B>Parameters:</B><DD><CODE>timems</CODE> - Time in milliseconds to calculate results for<DD><CODE>windDirectionDegrees</CODE> - The wind direction in degrees from 0 to 359</DL> <DT><B>Parameters:</B><DD><CODE>timems</CODE> - Time in milliseconds to calculate results for<DD><CODE>windDirectionDegrees</CODE> - The wind direction (where the wind is coming from) in degrees from 0 to 359.</DL>
</DD> </DD>
</DL> </DL>
<!-- ========= END OF CLASS DATA ========= --> <!-- ========= END OF CLASS DATA ========= -->
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
Uses of Class com.tractrac.ResultAPI.LiveResult (TracTrac Result API) Uses of Class com.tractrac.ResultAPI.LiveResult (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
Uses of Class com.tractrac.ResultAPI.LiveResultItem (TracTrac Result API) Uses of Class com.tractrac.ResultAPI.LiveResultItem (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
Uses of Class com.tractrac.ResultAPI.MarkResult (TracTrac Result API) Uses of Class com.tractrac.ResultAPI.MarkResult (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
@@ -130,10 +130,11 @@ Uses of <A HREF="../../../../com/tractrac/ResultAPI/MarkResult.html" title="clas
<TH ALIGN="left" COLSPAN="2">Constructors in <A HREF="../../../../com/tractrac/ResultAPI/package-summary.html">com.tractrac.ResultAPI</A> with parameters of type <A HREF="../../../../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A></FONT></TH> <TH ALIGN="left" COLSPAN="2">Constructors in <A HREF="../../../../com/tractrac/ResultAPI/package-summary.html">com.tractrac.ResultAPI</A> with parameters of type <A HREF="../../../../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A></FONT></TH>
</TR> </TR>
<TR BGCOLOR="white" CLASS="TableRowColor"> <TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../com/tractrac/ResultAPI/MarkResult.html#MarkResult(java.util.List, com.maptrack.client.data.EventClass, com.tractrac.ResultAPI.MarkResult, com.maptrack.client.data.ControlPoint)">MarkResult</A></B>(java.util.List&lt;com.maptrack.client.data.CompetitorMarkPassInfo&gt;&nbsp;markPassInfo, <TD><CODE><B><A HREF="../../../../com/tractrac/ResultAPI/MarkResult.html#MarkResult(java.util.List, com.maptrack.client.data.EventClass, com.tractrac.ResultAPI.MarkResult, com.maptrack.client.data.ControlPoint, double)">MarkResult</A></B>(java.util.List&lt;com.maptrack.client.data.CompetitorMarkPassInfo&gt;&nbsp;markPassInfo,
com.maptrack.client.data.EventClass&nbsp;eventClass, com.maptrack.client.data.EventClass&nbsp;eventClass,
<A HREF="../../../../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>&nbsp;previousMark, <A HREF="../../../../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>&nbsp;previousMark,
com.maptrack.client.data.ControlPoint&nbsp;cp)</CODE> com.maptrack.client.data.ControlPoint&nbsp;cp,
double&nbsp;legDirection)</CODE>
<BR> <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor for the MarkResult.</TD> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor for the MarkResult.</TD>
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
Uses of Class com.tractrac.ResultAPI.MarkResultItem (TracTrac Result API) Uses of Class com.tractrac.ResultAPI.MarkResultItem (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
Uses of Class com.tractrac.ResultAPI.PerLegResult (TracTrac Result API) Uses of Class com.tractrac.ResultAPI.PerLegResult (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
Uses of Class com.tractrac.ResultAPI.ResultGenerator (TracTrac Result API) Uses of Class com.tractrac.ResultAPI.ResultGenerator (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
com.tractrac.ResultAPI (TracTrac Result API) com.tractrac.ResultAPI (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
com.tractrac.ResultAPI (TracTrac Result API) com.tractrac.ResultAPI (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
com.tractrac.ResultAPI Class Hierarchy (TracTrac Result API) com.tractrac.ResultAPI Class Hierarchy (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
Uses of Package com.tractrac.ResultAPI (TracTrac Result API) Uses of Package com.tractrac.ResultAPI (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+48 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
Constant Field Values (TracTrac Result API) Constant Field Values (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
@@ -85,8 +85,54 @@ Constant Field Values</H1>
</CENTER> </CENTER>
<HR SIZE="4" NOSHADE> <HR SIZE="4" NOSHADE>
<B>Contents</B><UL> <B>Contents</B><UL>
<LI><A HREF="#com.tractrac">com.tractrac.*</A>
</UL> </UL>
<A NAME="com.tractrac"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left"><FONT SIZE="+2">
com.tractrac.*</FONT></TH>
</TR>
</TABLE>
<P>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="3">com.tractrac.ResultAPI.<A HREF="com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<A NAME="com.tractrac.ResultAPI.MarkResult.LEGTYPE_DOWNWIND"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
<TD ALIGN="left"><CODE><A HREF="com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_DOWNWIND">LEGTYPE_DOWNWIND</A></CODE></TD>
<TD ALIGN="right"><CODE>2</CODE></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<A NAME="com.tractrac.ResultAPI.MarkResult.LEGTYPE_REACHING"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
<TD ALIGN="left"><CODE><A HREF="com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_REACHING">LEGTYPE_REACHING</A></CODE></TD>
<TD ALIGN="right"><CODE>3</CODE></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<A NAME="com.tractrac.ResultAPI.MarkResult.LEGTYPE_UNKNOWN"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
<TD ALIGN="left"><CODE><A HREF="com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_UNKNOWN">LEGTYPE_UNKNOWN</A></CODE></TD>
<TD ALIGN="right"><CODE>0</CODE></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<A NAME="com.tractrac.ResultAPI.MarkResult.LEGTYPE_UPWIND"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
<TD ALIGN="left"><CODE><A HREF="com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_UPWIND">LEGTYPE_UPWIND</A></CODE></TD>
<TD ALIGN="right"><CODE>1</CODE></TD>
</TR>
</FONT></TD>
</TR>
</TABLE>
<P>
<P>
<HR> <HR>
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
Deprecated List (TracTrac Result API) Deprecated List (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
API Help (TracTrac Result API) API Help (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
C-Index (TracTrac Result API) C-Index (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+11 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
G-Index (TracTrac Result API) G-Index (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
@@ -151,6 +151,9 @@ Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkRe
<DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#getLegtime()"><B>getLegtime()</B></A> - <DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#getLegtime()"><B>getLegtime()</B></A> -
Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI">MarkResultItem</A> Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI">MarkResultItem</A>
<DD>Get the time used on last leg <DD>Get the time used on last leg
<DT><A HREF="../com/tractrac/ResultAPI/MarkResult.html#getLegType()"><B>getLegType()</B></A> -
Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>
<DD>Get the type of leg: LEGTYPE_UPWIND, LEGTYPE_DOWNWIND, LEGTYPE_REACHING or LEGTYPE_UNKNOWN.
<DT><A HREF="../com/tractrac/ResultAPI/ResultGenerator.html#getLiveResults()"><B>getLiveResults()</B></A> - <DT><A HREF="../com/tractrac/ResultAPI/ResultGenerator.html#getLiveResults()"><B>getLiveResults()</B></A> -
Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/ResultGenerator.html" title="class in com.tractrac.ResultAPI">ResultGenerator</A> Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/ResultGenerator.html" title="class in com.tractrac.ResultAPI">ResultGenerator</A>
<DD>Generates a live result list for the last time recalculate was run. <DD>Generates a live result list for the last time recalculate was run.
@@ -223,9 +226,15 @@ Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/LiveRe
<DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#getUuid()"><B>getUuid()</B></A> - <DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#getUuid()"><B>getUuid()</B></A> -
Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI">MarkResultItem</A> Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI">MarkResultItem</A>
<DD>Get the UUID of the competitor <DD>Get the UUID of the competitor
<DT><A HREF="../com/tractrac/ResultAPI/LiveResultItem.html#getVmg()"><B>getVmg()</B></A> -
Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/LiveResultItem.html" title="class in com.tractrac.ResultAPI">LiveResultItem</A>
<DD>Get VMG in knots measured at a point
<DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#getVMG()"><B>getVMG()</B></A> - <DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#getVMG()"><B>getVMG()</B></A> -
Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI">MarkResultItem</A> Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI">MarkResultItem</A>
<DD>Get the VMG for the last leg <DD>Get the VMG for the last leg
<DT><A HREF="../com/tractrac/ResultAPI/LiveResultItem.html#getVmgAverage30s()"><B>getVmgAverage30s()</B></A> -
Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/LiveResultItem.html" title="class in com.tractrac.ResultAPI">LiveResultItem</A>
<DD>Get the in knots VMG averaged over 30 seconds
</DL> </DL>
<HR> <HR>
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
I-Index (TracTrac Result API) I-Index (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+14 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
L-Index (TracTrac Result API) L-Index (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
@@ -82,6 +82,18 @@ function windowTitle()
<A NAME="_L_"><!-- --></A><H2> <A NAME="_L_"><!-- --></A><H2>
<B>L</B></H2> <B>L</B></H2>
<DL> <DL>
<DT><A HREF="../com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_DOWNWIND"><B>LEGTYPE_DOWNWIND</B></A> -
Static variable in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>
<DD>&nbsp;
<DT><A HREF="../com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_REACHING"><B>LEGTYPE_REACHING</B></A> -
Static variable in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>
<DD>&nbsp;
<DT><A HREF="../com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_UNKNOWN"><B>LEGTYPE_UNKNOWN</B></A> -
Static variable in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>
<DD>&nbsp;
<DT><A HREF="../com/tractrac/ResultAPI/MarkResult.html#LEGTYPE_UPWIND"><B>LEGTYPE_UPWIND</B></A> -
Static variable in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>
<DD>&nbsp;
<DT><A HREF="../com/tractrac/ResultAPI/LiveResult.html" title="class in com.tractrac.ResultAPI"><B>LiveResult</B></A> - Class in <A HREF="../com/tractrac/ResultAPI/package-summary.html">com.tractrac.ResultAPI</A><DD>A class representing a live result for sailing <DT><A HREF="../com/tractrac/ResultAPI/LiveResult.html" title="class in com.tractrac.ResultAPI"><B>LiveResult</B></A> - Class in <A HREF="../com/tractrac/ResultAPI/package-summary.html">com.tractrac.ResultAPI</A><DD>A class representing a live result for sailing
The result compares boats on all legs.<DT><A HREF="../com/tractrac/ResultAPI/LiveResult.html#LiveResult(com.maptrack.clientsail.data.ResultListBoat, com.maptrack.client.data.EventClass)"><B>LiveResult(ResultListBoat, EventClass)</B></A> - The result compares boats on all legs.<DT><A HREF="../com/tractrac/ResultAPI/LiveResult.html#LiveResult(com.maptrack.clientsail.data.ResultListBoat, com.maptrack.client.data.EventClass)"><B>LiveResult(ResultListBoat, EventClass)</B></A> -
+3 -3
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
M-Index (TracTrac Result API) M-Index (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
@@ -82,7 +82,7 @@ function windowTitle()
<A NAME="_M_"><!-- --></A><H2> <A NAME="_M_"><!-- --></A><H2>
<B>M</B></H2> <B>M</B></H2>
<DL> <DL>
<DT><A HREF="../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI"><B>MarkResult</B></A> - Class in <A HREF="../com/tractrac/ResultAPI/package-summary.html">com.tractrac.ResultAPI</A><DD>The resultlist for a specific mark for a specific class.<DT><A HREF="../com/tractrac/ResultAPI/MarkResult.html#MarkResult(java.util.List, com.maptrack.client.data.EventClass, com.tractrac.ResultAPI.MarkResult, com.maptrack.client.data.ControlPoint)"><B>MarkResult(List&lt;CompetitorMarkPassInfo&gt;, EventClass, MarkResult, ControlPoint)</B></A> - <DT><A HREF="../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI"><B>MarkResult</B></A> - Class in <A HREF="../com/tractrac/ResultAPI/package-summary.html">com.tractrac.ResultAPI</A><DD>The resultlist for a specific mark for a specific class.<DT><A HREF="../com/tractrac/ResultAPI/MarkResult.html#MarkResult(java.util.List, com.maptrack.client.data.EventClass, com.tractrac.ResultAPI.MarkResult, com.maptrack.client.data.ControlPoint, double)"><B>MarkResult(List&lt;CompetitorMarkPassInfo&gt;, EventClass, MarkResult, ControlPoint, double)</B></A> -
Constructor for class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A> Constructor for class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResult.html" title="class in com.tractrac.ResultAPI">MarkResult</A>
<DD>Constructor for the MarkResult. <DD>Constructor for the MarkResult.
<DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI"><B>MarkResultItem</B></A> - Class in <A HREF="../com/tractrac/ResultAPI/package-summary.html">com.tractrac.ResultAPI</A><DD>Contains all information about a mark-rounding per competitor per mark.<DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#MarkResultItem()"><B>MarkResultItem()</B></A> - <DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI"><B>MarkResultItem</B></A> - Class in <A HREF="../com/tractrac/ResultAPI/package-summary.html">com.tractrac.ResultAPI</A><DD>Contains all information about a mark-rounding per competitor per mark.<DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#MarkResultItem()"><B>MarkResultItem()</B></A> -
+3 -3
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
P-Index (TracTrac Result API) P-Index (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
@@ -82,7 +82,7 @@ function windowTitle()
<A NAME="_P_"><!-- --></A><H2> <A NAME="_P_"><!-- --></A><H2>
<B>P</B></H2> <B>P</B></H2>
<DL> <DL>
<DT><A HREF="../com/tractrac/ResultAPI/PerLegResult.html" title="class in com.tractrac.ResultAPI"><B>PerLegResult</B></A> - Class in <A HREF="../com/tractrac/ResultAPI/package-summary.html">com.tractrac.ResultAPI</A><DD>A result for one class for all marks<DT><A HREF="../com/tractrac/ResultAPI/PerLegResult.html#PerLegResult(com.maptrack.client.gui.IProgressDataGetter, com.maptrack.client.data.ClientEventRaceData, com.maptrack.client.data.EventClass)"><B>PerLegResult(IProgressDataGetter, ClientEventRaceData, EventClass)</B></A> - <DT><A HREF="../com/tractrac/ResultAPI/PerLegResult.html" title="class in com.tractrac.ResultAPI"><B>PerLegResult</B></A> - Class in <A HREF="../com/tractrac/ResultAPI/package-summary.html">com.tractrac.ResultAPI</A><DD>A result for one class for all marks<DT><A HREF="../com/tractrac/ResultAPI/PerLegResult.html#PerLegResult(com.maptrack.client.gui.IProgressDataGetter, com.maptrack.client.data.ClientEventRaceData, com.maptrack.client.data.EventClass, com.maptrack.clientsail.data.BoatRaceData)"><B>PerLegResult(IProgressDataGetter, ClientEventRaceData, EventClass, BoatRaceData)</B></A> -
Constructor for class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/PerLegResult.html" title="class in com.tractrac.ResultAPI">PerLegResult</A> Constructor for class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/PerLegResult.html" title="class in com.tractrac.ResultAPI">PerLegResult</A>
<DD>The constructer for the PerLegResult. <DD>The constructer for the PerLegResult.
</DL> </DL>
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
R-Index (TracTrac Result API) R-Index (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+8 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
S-Index (TracTrac Result API) S-Index (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
@@ -173,9 +173,15 @@ Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/LiveRe
<DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#setUuid(java.util.UUID)"><B>setUuid(UUID)</B></A> - <DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#setUuid(java.util.UUID)"><B>setUuid(UUID)</B></A> -
Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI">MarkResultItem</A> Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI">MarkResultItem</A>
<DD>Set the UUID of the competitor <DD>Set the UUID of the competitor
<DT><A HREF="../com/tractrac/ResultAPI/LiveResultItem.html#setVmg(double)"><B>setVmg(double)</B></A> -
Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/LiveResultItem.html" title="class in com.tractrac.ResultAPI">LiveResultItem</A>
<DD>Set VMG in knots measured at a point
<DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#setVMG(double)"><B>setVMG(double)</B></A> - <DT><A HREF="../com/tractrac/ResultAPI/MarkResultItem.html#setVMG(double)"><B>setVMG(double)</B></A> -
Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI">MarkResultItem</A> Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/MarkResultItem.html" title="class in com.tractrac.ResultAPI">MarkResultItem</A>
<DD>Set the VMG of the last leg <DD>Set the VMG of the last leg
<DT><A HREF="../com/tractrac/ResultAPI/LiveResultItem.html#setVmgAverage30s(double)"><B>setVmgAverage30s(double)</B></A> -
Method in class com.tractrac.ResultAPI.<A HREF="../com/tractrac/ResultAPI/LiveResultItem.html" title="class in com.tractrac.ResultAPI">LiveResultItem</A>
<DD>Set the VMG in knots averaged over 30 seconds
</DL> </DL>
<HR> <HR>
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
V-Index (TracTrac Result API) V-Index (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+1 -1
View File
@@ -2,7 +2,7 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc on Thu Jun 02 10:36:51 CEST 2011--> <!-- Generated by javadoc on Wed Jun 15 11:41:57 CEST 2011-->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
TracTrac Result API TracTrac Result API
+2 -2
View File
@@ -2,13 +2,13 @@
<!--NewPage--> <!--NewPage-->
<HTML> <HTML>
<HEAD> <HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Thu Jun 02 10:36:51 CEST 2011 --> <!-- Generated by javadoc (build 1.6.0_24) on Wed Jun 15 11:41:57 CEST 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE> <TITLE>
Class Hierarchy (TracTrac Result API) Class Hierarchy (TracTrac Result API)
</TITLE> </TITLE>
<META NAME="date" CONTENT="2011-06-02"> <META NAME="date" CONTENT="2011-06-15">
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style"> <LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
View File
File mode changed.
View File
File mode changed.

Before

Width:  |  Height:  |  Size: 57 B

After

Width:  |  Height:  |  Size: 57 B

View File
File mode changed.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
+9 -1
View File
@@ -44,7 +44,7 @@ public class ResultAPITester {
Calendar cal = new GregorianCalendar(111, 3, 01, 00, 20, 00); Calendar cal = new GregorianCalendar(111, 3, 01, 00, 20, 00);
long StartTimeRace = cal.getTimeInMillis(); long StartTimeRace = cal.getTimeInMillis();
// Set the speed up of the demonstration // Set the speed up of the demonstration
int speedup = 10; int speedup = 40;
// Instance the resultgenerator using a URL for a specific race // Instance the resultgenerator using a URL for a specific race
ResultGenerator generator = new ResultGenerator(new URL("http://germanmaster.traclive.dk/events/event_20110308_SAPWorldCh/clientparams.php?event=event_20110308_SAPWorldCh&race=5ffe619e-4962-11e0-8236-406186cbf87c&ci=&minimize=&LiveDelaySecs=")); ResultGenerator generator = new ResultGenerator(new URL("http://germanmaster.traclive.dk/events/event_20110308_SAPWorldCh/clientparams.php?event=event_20110308_SAPWorldCh&race=5ffe619e-4962-11e0-8236-406186cbf87c&ci=&minimize=&LiveDelaySecs="));
@@ -112,6 +112,8 @@ public class ResultAPITester {
System.out.println("\t\t\tLatitude: " + item.getLatitude()); System.out.println("\t\t\tLatitude: " + item.getLatitude());
System.out.println("\t\t\tLongitude: " + item.getLongitude()); System.out.println("\t\t\tLongitude: " + item.getLongitude());
System.out.println("\t\t\tSpeed: " + item.getSpeed()); System.out.println("\t\t\tSpeed: " + item.getSpeed());
System.out.println("\t\t\tVMG: " + item.getVmg());
System.out.println("\t\t\tVMG, averaged: " + item.getVmgAverage30s());
System.out.println("\t\t\tFinished: " + item.isHasFinished()); System.out.println("\t\t\tFinished: " + item.isHasFinished());
} }
} }
@@ -126,6 +128,12 @@ public class ResultAPITester {
// Get a result list per mark // Get a result list per mark
for (MarkResult markResult : plr.values()) { for (MarkResult markResult : plr.values()) {
System.out.println("\tMark: " + markResult.getMarkName() + " - " + (m+1) + "/" + plr.getMarkCount()); System.out.println("\tMark: " + markResult.getMarkName() + " - " + (m+1) + "/" + plr.getMarkCount());
System.out.print("\tLegtype: ");
if (markResult.getLegType() == MarkResult.LEGTYPE_UPWIND) System.out.println("Upwind");
if (markResult.getLegType() == MarkResult.LEGTYPE_DOWNWIND) System.out.println("Downwind");
if (markResult.getLegType() == MarkResult.LEGTYPE_REACHING) System.out.println("Reaching");
if (markResult.getLegType() == MarkResult.LEGTYPE_UNKNOWN) System.out.println("Unknown");
m++; m++;
// Get a result item per competitor // Get a result item per competitor
for (MarkResultItem item : markResult.values()) { for (MarkResultItem item : markResult.values()) {
Regular → Executable
+158 -159
View File
@@ -1,159 +1,158 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project <project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.sap.sailing</groupId> <groupId>com.sap.sailing</groupId>
<artifactId>root</artifactId> <artifactId>root</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<modules> <modules>
<module>com.sap.sailing.domain</module> <module>com.sap.sailing.domain</module>
<module>com.sap.sailing.domain.test</module> <module>com.sap.sailing.domain.test</module>
<module>com.sap.sailing.domain.tractracadapter</module> <module>com.sap.sailing.domain.tractracadapter</module>
<module>com.sap.sailing.declination</module> <module>com.sap.sailing.declination</module>
<module>com.sap.sailing.declination.test</module> <module>com.sap.sailing.declination.test</module>
<module>com.sap.sailing.expeditionconnector</module> <module>com.sap.sailing.expeditionconnector</module>
<module>com.sap.sailing.expeditionconnector.test</module> <module>com.sap.sailing.expeditionconnector.test</module>
<module>com.sap.sailing.server</module> <module>com.sap.sailing.server</module>
<module>com.sap.sailing.server.test</module> <module>com.sap.sailing.mongodb</module>
<module>com.sap.sailing.mongodb</module> <module>com.sap.sailing.mongodb.test</module>
<module>com.sap.sailing.mongodb.test</module> <module>com.tractrac.clientmodule</module>
<module>com.tractrac.clientmodule</module> <module>com.tractrac.resultapi</module>
<module>com.tractrac.resultapi</module> <module>org.json.simple</module>
<module>org.json.simple</module> <module>com.mongodb.driver</module>
<module>com.mongodb.driver</module> <module>com.googlecode.java-diff-utils</module>
<module>com.googlecode.java-diff-utils</module> <module>com.googlecode.java-diff-utils.test</module>
<module>com.googlecode.java-diff-utils.test</module> </modules>
</modules>
<properties>
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties>
</properties>
<build>
<build> <directory>bin</directory>
<directory>bin</directory> <outputDirectory>bin</outputDirectory>
<outputDirectory>bin</outputDirectory> <testOutputDirectory>bin</testOutputDirectory>
<testOutputDirectory>bin</testOutputDirectory>
<pluginManagement>
<pluginManagement> <plugins>
<plugins> <plugin>
<plugin> <inherited>true</inherited>
<inherited>true</inherited> <groupId>org.sonatype.tycho</groupId>
<groupId>org.sonatype.tycho</groupId> <artifactId>maven-osgi-test-plugin</artifactId>
<artifactId>maven-osgi-test-plugin</artifactId> <version>0.10.0</version>
<version>0.10.0</version> </plugin>
</plugin> <plugin>
<plugin> <groupId>org.apache.maven.plugins</groupId>
<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId>
<artifactId>maven-surefire-plugin</artifactId> <version>2.6</version>
<version>2.6</version> </plugin>
</plugin> </plugins>
</plugins> </pluginManagement>
</pluginManagement>
<plugins>
<plugins> <plugin>
<plugin> <groupId>org.sonatype.tycho</groupId>
<groupId>org.sonatype.tycho</groupId> <artifactId>tycho-maven-plugin</artifactId>
<artifactId>tycho-maven-plugin</artifactId> <version>0.10.0</version>
<version>0.10.0</version> <extensions>true</extensions>
<extensions>true</extensions> </plugin>
</plugin> <plugin>
<plugin> <groupId>org.sonatype.tycho</groupId>
<groupId>org.sonatype.tycho</groupId> <artifactId>target-platform-configuration</artifactId>
<artifactId>target-platform-configuration</artifactId> <version>0.10.0</version>
<version>0.10.0</version> <configuration>
<configuration> <resolver>p2</resolver>
<resolver>p2</resolver> <environments>
<environments> <environment>
<environment> <os>linux</os>
<os>linux</os> <ws>gtk</ws>
<ws>gtk</ws> <arch>x86</arch>
<arch>x86</arch> </environment>
</environment> <environment>
<environment> <os>linux</os>
<os>linux</os> <ws>gtk</ws>
<ws>gtk</ws> <arch>x86_64</arch>
<arch>x86_64</arch> </environment>
</environment> <environment>
<environment> <os>win32</os>
<os>win32</os> <ws>win32</ws>
<ws>win32</ws> <arch>x86</arch>
<arch>x86</arch> </environment>
</environment> <environment>
<environment> <os>win32</os>
<os>win32</os> <ws>win32</ws>
<ws>win32</ws> <arch>x86_64</arch>
<arch>x86_64</arch> </environment>
</environment> <environment>
<environment> <os>macosx</os>
<os>macosx</os> <ws>cocoa</ws>
<ws>cocoa</ws> <arch>x86_64</arch>
<arch>x86_64</arch> </environment>
</environment> </environments>
</environments> </configuration>
</configuration> </plugin>
</plugin> <plugin>
<plugin> <groupId>org.sonatype.tycho</groupId>
<groupId>org.sonatype.tycho</groupId> <artifactId>maven-osgi-test-plugin</artifactId>
<artifactId>maven-osgi-test-plugin</artifactId> <configuration>
<configuration> <!-- non-debug -->
<!-- non-debug --> <!-- proxy
<!-- proxy <argLine>-Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080 -Xmx1024m -XX:PermSize=256m -XX:-UseGCOverheadLimit -XX:+UseParallelGC</argLine>
<argLine>-Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080 -Xmx1024m -XX:PermSize=256m -XX:-UseGCOverheadLimit -XX:+UseParallelGC</argLine> -->
--> <!-- no proxy -->
<!-- no proxy --> <argLine>-Dmongo.port=10200 -Xmx1024m -XX:PermSize=256m -XX:-UseGCOverheadLimit -XX:+UseParallelGC</argLine>
<argLine>-Dmongo.port=10200 -Xmx1024m -XX:PermSize=256m -XX:-UseGCOverheadLimit -XX:+UseParallelGC</argLine> <!-- -->
<!-- --> <!-- -->
<!-- --> <!-- debug
<!-- debug <argLine>-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y -Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080 -Xmx1024m -XX:PermSize=256m -XX:-UseGCOverheadLimit -XX:+UseParallelGC</argLine>
<argLine>-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y -Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080 -Xmx1024m -XX:PermSize=256m -XX:-UseGCOverheadLimit -XX:+UseParallelGC</argLine> -->
--> <testFailureIgnore>true</testFailureIgnore>
<testFailureIgnore>true</testFailureIgnore> <excludes>
<excludes> <exclude>**/*$*</exclude> <!-- Exclude inner classes -->
<exclude>**/*$*</exclude> <!-- Exclude inner classes --> </excludes>
</excludes> </configuration>
</configuration> </plugin>
</plugin> <plugin>
<plugin> <groupId>org.sonatype.tycho</groupId>
<groupId>org.sonatype.tycho</groupId> <artifactId>maven-osgi-compiler-plugin</artifactId>
<artifactId>maven-osgi-compiler-plugin</artifactId> <version>0.10.0</version>
<version>0.10.0</version> <configuration>
<configuration> <source>1.6</source>
<source>1.6</source> <target>1.6</target>
<target>1.6</target> </configuration>
</configuration> </plugin>
</plugin> </plugins>
</plugins>
<extensions>
<extensions> <!-- Enabling the use of FTP -->
<!-- Enabling the use of FTP --> <extension>
<extension> <groupId>org.apache.maven.wagon</groupId>
<groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ssh-external</artifactId>
<artifactId>wagon-ssh-external</artifactId> <version>1.0-beta-6</version>
<version>1.0-beta-6</version> </extension>
</extension> </extensions>
</extensions>
</build>
</build>
<distributionManagement>
<distributionManagement> <repository>
<repository> <id>ssh-repository</id>
<id>ssh-repository</id> <url>scpexe://trac@localhost:12347/home/trac/maven-repositories/test</url>
<url>scpexe://trac@localhost:12347/home/trac/maven-repositories/dev</url> </repository>
</repository> </distributionManagement>
</distributionManagement>
<repositories>
<repositories> <repository>
<repository> <layout>p2</layout>
<layout>p2</layout> <id>eclipse</id>
<id>eclipse</id> <url>http://download.eclipse.org/releases/indigo/</url>
<url>http://download.eclipse.org/releases/indigo/</url> </repository>
</repository> </repositories>
</repositories>
</project>
</project>
@@ -61,7 +61,7 @@
$('#wind-bearing').html(data.truebearingdeg); $('#wind-bearing').html(data.truebearingdeg);
$('#wind-speed').html(data.knotspeed); $('#wind-speed').html(data.knotspeed);
$('#wind-lat').html(data.latdeg); $('#wind-lat').html(data.latdeg);
$('#wind-lng').html(data.lngdev); $('#wind-lng').html(data.lngdeg);
}); });
// also show wind directions // also show wind directions
@@ -125,7 +125,7 @@
obj = data[d]; obj = data[d];
if (obj.latdeg != undefined) { if (obj.latdeg != undefined) {
map.addMarker(obj.latdeg, obj.lngdev, obj.name, _base_url() + 'static/images/boat16.png'); map.addMarker(obj.latdeg, obj.lngdeg, obj.name, _base_url() + 'static/images/boat16.png');
} else { } else {
} }
} }
@@ -1 +1 @@
{"name":"Race 12 (Gold)","competitors":[{"name":"BELTRI","track":[{"timepoint":1247317161000,"latdeg":43.506012,"lngdev":-3.754038,"truebearingdeg":185.0,"knotspeed":8.639308855291576},{"timepoint":1247317164000,"latdeg":43.505887,"lngdev":-3.75407,"truebearingdeg":192.0,"knotspeed":8.639308855291576},{"timepoint":1247317167000,"latdeg":43.505762999999995,"lngdev":-3.754098,"truebearingdeg":187.0,"knotspeed":8.099352051835853},{"timepoint":1247317170000,"latdeg":43.505641999999995,"lngdev":-3.7541249999999997,"truebearingdeg":188.0,"knotspeed":8.639308855291576},{"timepoint":1247317173000,"latdeg":43.50552,"lngdev":-3.754158,"truebearingdeg":189.0,"knotspeed":8.639308855291576},{"timepoint":1247317176000,"latdeg":43.505393,"lngdev":-3.7541879999999996,"truebearingdeg":188.0,"knotspeed":8.639308855291576},{"timepoint":1247317179000,"latdeg":43.505286999999996,"lngdev":-3.7542069999999996,"truebearingdeg":178.0,"knotspeed":6.479481641468682},{"timepoint":1247317182000,"latdeg":43.505187899999996,"lngdev":-3.75421,"truebearingdeg":184.0,"knotspeed":7.559395248380129},{"timepoint":1247317185000,"latdeg":43.505081999999994,"lngdev":-3.754237,"truebearingdeg":192.0,"knotspeed":8.099352051835853},{"timepoint":1247317188000,"latdeg":43.50497,"lngdev":-3.7542679999999997,"truebearingdeg":196.0,"knotspeed":8.099352051835853},{"timepoint":1247317191000,"latdeg":43.50486,"lngdev":-3.7543349999999998,"truebearingdeg":205.0,"knotspeed":8.639308855291576},{"timepoint":1247317194000,"latdeg":43.504745,"lngdev":-3.7544049999999998,"truebearingdeg":199.0,"knotspeed":8.639308855291576},{"timepoint":1247317197000,"latdeg":43.504632,"lngdev":-3.754463,"truebearingdeg":196.0,"knotspeed":8.639308855291576},{"timepoint":1247317203000,"latdeg":43.504397999999995,"lngdev":-3.754555,"truebearingdeg":195.0,"knotspeed":7.559395248380129},{"timepoint":1247317207000,"latdeg":43.504264899999995,"lngdev":-3.7546049999999997,"truebearingdeg":196.0,"knotspeed":7.559395248380129},{"timepoint":1247317209000,"latdeg":43.504197,"lngdev":-3.7546399999999998,"truebearingdeg":199.0,"knotspeed":7.559395248380129},{"timepoint":1247317213000,"latdeg":43.504031999999995,"lngdev":-3.7547099999999998,"truebearingdeg":196.0,"knotspeed":10.259179265658748},{"timepoint":1247317219000,"latdeg":43.503792,"lngdev":-3.75478,"truebearingdeg":189.0,"knotspeed":7.019438444924406},{"timepoint":1247317222000,"latdeg":43.503685,"lngdev":-3.754807,"truebearingdeg":182.0,"knotspeed":7.559395248380129},{"timepoint":1247317225000,"latdeg":43.503575,"lngdev":-3.7548179999999998,"truebearingdeg":184.0,"knotspeed":8.099352051835853},{"timepoint":1247317228000,"latdeg":43.503451999999996,"lngdev":-3.7548529999999998,"truebearingdeg":189.0,"knotspeed":8.099352051835853},{"timepoint":1247317231000,"latdeg":43.503338,"lngdev":-3.754883,"truebearingdeg":192.0,"knotspeed":8.099352051835853},{"timepoint":1247317234000,"latdeg":43.503215,"lngdev":-3.75493,"truebearingdeg":196.0,"knotspeed":9.1792656587473},{"timepoint":1247317236000,"latdeg":43.503132,"lngdev":-3.754968,"truebearingdeg":192.0,"knotspeed":9.1792656587473},{"timepoint":1247317239000,"latdeg":43.502998,"lngdev":-3.754997,"truebearingdeg":187.0,"knotspeed":9.719222462203025},{"timepoint":1247317242000,"latdeg":43.502862,"lngdev":-3.755022,"truebearingdeg":185.0,"knotspeed":8.639308855291576},{"timepoint":1247317245000,"latdeg":43.50275,"lngdev":-3.755035,"truebearingdeg":185.0,"knotspeed":7.559395248380129},{"timepoint":1247317248000,"latdeg":43.502637,"lngdev":-3.755055,"truebearingdeg":182.0,"knotspeed":8.099352051835853},{"timepoint":1247317251000,"latdeg":43.502525,"lngdev":-3.755048,"truebearingdeg":177.0,"knotspeed":7.559395248380129},{"timepoint":1247317254000,"latdeg":43.502421999999996,"lngdev":-3.755038,"truebearingdeg":177.0,"knotspeed":7.559395248380129},{"timepoint":1247317257000,"latdeg":43.502308,"lngdev":-3.7550329999999996,"truebearingdeg":184.0,"knotspeed":8.099352051835853},{"timepoint":1247317260000,"latdeg":43.502193,"lngdev":-3.755047,"truebearingdeg":184.0,"knotspeed":8.099352051835853},{"timepoint":1247317263000,"latdeg":43.502075,"lngdev":-3.75508,"truebearingdeg":194.0,"knotspeed":8.639308855291576},{"timepoint":1247317266000,"latdeg":43.501959899999996,"lngdev":-3.755125,"truebearingdeg":194.0,"knotspeed":7.559395248380129},{"timepoint":1247317269000,"latdeg":43.50185,"lngdev":-3.755172,"truebearingdeg":196.0,"knotspeed":9.1792656587473},{"timepoint":1247317272000,"latdeg":43.501725,"lngdev":-3.755225,"truebearingdeg":194.0,"knotspeed":9.719222462203025},{"timepoint":1247317275000,"latdeg":43.50159,"lngdev":-3.7552779999999997,"truebearingdeg":196.0,"knotspeed":9.1792656587473},{"timepoint":1247317278000,"latdeg":43.501472,"lngdev":-3.7553419999999997,"truebearingdeg":199.0,"knotspeed":8.099352051835853},{"timepoint":1247317281000,"latdeg":43.501362,"lngdev":-3.755403,"truebearingdeg":196.0,"knotspeed":8.099352051835853},{"timepoint":1247317284000,"latdeg":43.501255,"lngdev":-3.7554529999999Line truncated {"name":"Race 12 (Gold)","competitors":[{"name":"BELTRI","track":[{"timepoint":1247317161000,"latdeg":43.506012,"lngdeg":-3.754038,"truebearingdeg":185.0,"knotspeed":8.639308855291576},{"timepoint":1247317164000,"latdeg":43.505887,"lngdeg":-3.75407,"truebearingdeg":192.0,"knotspeed":8.639308855291576},{"timepoint":1247317167000,"latdeg":43.505762999999995,"lngdeg":-3.754098,"truebearingdeg":187.0,"knotspeed":8.099352051835853},{"timepoint":1247317170000,"latdeg":43.505641999999995,"lngdeg":-3.7541249999999997,"truebearingdeg":188.0,"knotspeed":8.639308855291576},{"timepoint":1247317173000,"latdeg":43.50552,"lngdeg":-3.754158,"truebearingdeg":189.0,"knotspeed":8.639308855291576},{"timepoint":1247317176000,"latdeg":43.505393,"lngdeg":-3.7541879999999996,"truebearingdeg":188.0,"knotspeed":8.639308855291576},{"timepoint":1247317179000,"latdeg":43.505286999999996,"lngdeg":-3.7542069999999996,"truebearingdeg":178.0,"knotspeed":6.479481641468682},{"timepoint":1247317182000,"latdeg":43.505187899999996,"lngdeg":-3.75421,"truebearingdeg":184.0,"knotspeed":7.559395248380129},{"timepoint":1247317185000,"latdeg":43.505081999999994,"lngdeg":-3.754237,"truebearingdeg":192.0,"knotspeed":8.099352051835853},{"timepoint":1247317188000,"latdeg":43.50497,"lngdeg":-3.7542679999999997,"truebearingdeg":196.0,"knotspeed":8.099352051835853},{"timepoint":1247317191000,"latdeg":43.50486,"lngdeg":-3.7543349999999998,"truebearingdeg":205.0,"knotspeed":8.639308855291576},{"timepoint":1247317194000,"latdeg":43.504745,"lngdeg":-3.7544049999999998,"truebearingdeg":199.0,"knotspeed":8.639308855291576},{"timepoint":1247317197000,"latdeg":43.504632,"lngdeg":-3.754463,"truebearingdeg":196.0,"knotspeed":8.639308855291576},{"timepoint":1247317203000,"latdeg":43.504397999999995,"lngdeg":-3.754555,"truebearingdeg":195.0,"knotspeed":7.559395248380129},{"timepoint":1247317207000,"latdeg":43.504264899999995,"lngdeg":-3.7546049999999997,"truebearingdeg":196.0,"knotspeed":7.559395248380129},{"timepoint":1247317209000,"latdeg":43.504197,"lngdeg":-3.7546399999999998,"truebearingdeg":199.0,"knotspeed":7.559395248380129},{"timepoint":1247317213000,"latdeg":43.504031999999995,"lngdeg":-3.7547099999999998,"truebearingdeg":196.0,"knotspeed":10.259179265658748},{"timepoint":1247317219000,"latdeg":43.503792,"lngdeg":-3.75478,"truebearingdeg":189.0,"knotspeed":7.019438444924406},{"timepoint":1247317222000,"latdeg":43.503685,"lngdeg":-3.754807,"truebearingdeg":182.0,"knotspeed":7.559395248380129},{"timepoint":1247317225000,"latdeg":43.503575,"lngdeg":-3.7548179999999998,"truebearingdeg":184.0,"knotspeed":8.099352051835853},{"timepoint":1247317228000,"latdeg":43.503451999999996,"lngdeg":-3.7548529999999998,"truebearingdeg":189.0,"knotspeed":8.099352051835853},{"timepoint":1247317231000,"latdeg":43.503338,"lngdeg":-3.754883,"truebearingdeg":192.0,"knotspeed":8.099352051835853},{"timepoint":1247317234000,"latdeg":43.503215,"lngdeg":-3.75493,"truebearingdeg":196.0,"knotspeed":9.1792656587473},{"timepoint":1247317236000,"latdeg":43.503132,"lngdeg":-3.754968,"truebearingdeg":192.0,"knotspeed":9.1792656587473},{"timepoint":1247317239000,"latdeg":43.502998,"lngdeg":-3.754997,"truebearingdeg":187.0,"knotspeed":9.719222462203025},{"timepoint":1247317242000,"latdeg":43.502862,"lngdeg":-3.755022,"truebearingdeg":185.0,"knotspeed":8.639308855291576},{"timepoint":1247317245000,"latdeg":43.50275,"lngdeg":-3.755035,"truebearingdeg":185.0,"knotspeed":7.559395248380129},{"timepoint":1247317248000,"latdeg":43.502637,"lngdeg":-3.755055,"truebearingdeg":182.0,"knotspeed":8.099352051835853},{"timepoint":1247317251000,"latdeg":43.502525,"lngdeg":-3.755048,"truebearingdeg":177.0,"knotspeed":7.559395248380129},{"timepoint":1247317254000,"latdeg":43.502421999999996,"lngdeg":-3.755038,"truebearingdeg":177.0,"knotspeed":7.559395248380129},{"timepoint":1247317257000,"latdeg":43.502308,"lngdeg":-3.7550329999999996,"truebearingdeg":184.0,"knotspeed":8.099352051835853},{"timepoint":1247317260000,"latdeg":43.502193,"lngdeg":-3.755047,"truebearingdeg":184.0,"knotspeed":8.099352051835853},{"timepoint":1247317263000,"latdeg":43.502075,"lngdeg":-3.75508,"truebearingdeg":194.0,"knotspeed":8.639308855291576},{"timepoint":1247317266000,"latdeg":43.501959899999996,"lngdeg":-3.755125,"truebearingdeg":194.0,"knotspeed":7.559395248380129},{"timepoint":1247317269000,"latdeg":43.50185,"lngdeg":-3.755172,"truebearingdeg":196.0,"knotspeed":9.1792656587473},{"timepoint":1247317272000,"latdeg":43.501725,"lngdeg":-3.755225,"truebearingdeg":194.0,"knotspeed":9.719222462203025},{"timepoint":1247317275000,"latdeg":43.50159,"lngdeg":-3.7552779999999997,"truebearingdeg":196.0,"knotspeed":9.1792656587473},{"timepoint":1247317278000,"latdeg":43.501472,"lngdeg":-3.7553419999999997,"truebearingdeg":199.0,"knotspeed":8.099352051835853},{"timepoint":1247317281000,"latdeg":43.501362,"lngdeg":-3.755403,"truebearingdeg":196.0,"knotspeed":8.099352051835853},{"timepoint":1247317284000,"latdeg":43.501255,"lngdeg":-3.7554529999999Line truncated