Files
sailing-analytics/java/com.tractrac.clientmodule/README.txt
T
2024-04-17 16:32:27 +02:00

1363 lines
51 KiB
Plaintext

********************************************
TracAPI
********************************************
1) Content
This zip package contains 3 folders:
- lib -> contains the Trac-API compiled library
- src -> contains the source code of the API and some code examples
- javadoc -> contains the JavaDoc
It contains also some files:
- test.sh -> script that compiles the code in the src folder, creates the test.jar library and execute the code of the example.
- Manifest.txt -> manifest used to create the test.jar file
********************************************
TracAPI 3.15.6
********************************************
This is a final version. It keeps the backward compatibility.
Release date: 17/04/2024
1) Bugs
- There are some threads that are not killed when the connection is closed. These threads were added to collect
statistics but this feature make not sense in TracAPI. (Reported by Axel Uhl, 17/04/2024)
********************************************
TracAPI 3.15.5
********************************************
This is a final version. It keeps the backward compatibility.
Release date: 17/04/2024
1) Bugs
- Deadlock when a connection was closed by the server and the client called the IRaceSubscriber.stop method. (Reported by
Axel Uhl, 16/04/2024)
********************************************
TracAPI 3.15.4
********************************************
This is a final version. It keeps the backward compatibility.
Release date: 16/04/2024
1) Features
- Formatting the code using blank spaces (instead of tabs). The workspace was already configured like this,
but the old files kept some tabs. All the code has been formatted again. (Requested by Axel Uhl, 19/02/2024)
2) Bugs
- When the IRaceSubscriber.stop method is called, the library doesn't close the connection. (Reported by Axel Uhl, 03/04/2024)
- Improving the detection of a dead connection. (Reported by Axel Uhl, 03/04/2024)
********************************************
TracAPI 3.15.3
********************************************
This is a final version. It keeps the backward compatibility.
Release date: 11/03/2024
1) Feature
- Adding the method IPosition.getRTKStatus used to get the RTK status (Requested by Chris Terkelsen, 07/03/2024)
2) Bugs
- Some socket connections were not closed correctly (Reported by Jorge Piera, 08/03/2024)
********************************************
TracAPI 3.15.2
********************************************
This is a final version. It keeps the backward compatibility.
Release date: 20/02/2024
1) Feature
- Removing the usage of the IMetricsService (Requested by Axel Uhl, 19/02/2024)
********************************************
TracAPI 3.15.1
********************************************
This is a final version. It keeps the backward compatibility.
Release date: 19/02/2024
1) Feature
- Adding a setter to register an implementation for the IClientSocketFactory (Requested by Axel Uhl, 19/02/2024)
********************************************
TracAPI 3.15.0
********************************************
This is a final version. It adds some changes in the protocol used to exchange live data. It will be necessary to use
this version to receive live data from the 19/02/2024. It also changes the signatures of some interfaces, breaking
the backward compatibility. These interfaces are:
- Removing the method IControlPassingsListener.gotControlPassings(IRaceCompetitor,IControlPassings). This method is not called by the
implementation. The classes that implement this interface have to update their implementations removing this method. There is
another method with the same name that includes timestamp.
- Updating the methods of the IPositionFactory. This factory should be used only internally so the thirds party apps should
not be affected
Release date: 19/02/2024
1) Features
- The IPosition has a new method to get the true heading (getTrueHeading) (Requested by Radek Masnica, 2023)
- Adding two new entry statuses: STP and SCP (Requested by Radek Masnica, 2023)
2) Bugs
- Updating the protocol to send/receive messages between the dataserver and the library.
- Fixing a bug when the route is updated and it has not metadata attached (reported by Jorge Piera, 11/11/2023)
********************************************
TracAPI 3.14.2
********************************************
This is a final version. It keeps the backward compatibility.
Release date: 25/07/2021
Build number:
1) Bug
- Catching the exceptions when TracAPI executes the callbacks. Otherwise, an exception
in the consumer application could finalize a TracAPI thread. (Requested by Axel Uhl, 25/07/2021)
********************************************
TracAPI 3.14.1
********************************************
This is a final version. It keeps the backward compatibility.
Release date: 22/06/2021
Build number:
1) Features
- Adding the methods IRaceCompetitor.getStatusLastChangedTime and IRace.getStatusLastChangedTime to retrieve
the time when the status was changed the last time (Requested by Axel Uhl, 18/06/2021)
********************************************
TracAPI 3.14.0
********************************************
This is a final version. It changes the signatures of some listeners, breaking the backward compatibility:
Some of the interfaces used to receive data have been updated adding a parameter "long timestamp" that contains the value
of the time when the message was generated by the server. These interfaces are:
- IControlPassingsListener
- IControlsListener
- ICompetitorsListener
- IRaceCompetitorListener
- IRacesListener
The classes that implement any of these interfaces have to update their implementations adding this new parameter to their methods.
Release date: 15/06/2021
Build number:
1) Features
- Adding the parameter timestamp to some interfaces. NOTE: IRaceObject has a method getStatusTime that means the
time stamp when the competitor changed its status (e.g: the time stamp when the competitor got the black flag). This
value can be empty for some statuses like DNC, DNS, DNF, etc. (Requested by Axel Uhl, 02/06/2021)
2) Bugs
- The event live delay is always propagated to the clients when there is a change in the race
(Reported by Axel Uhl, 02/06/2021)
********************************************
TracAPI 3.13.10
********************************************
This is a final version. It keeps the backward compatibility.
Release date: 02/06/2021
Build number:
1) Bugs
- ConcurrentModificationException: the callbacks used by the IRacesListener, ICompetitorsListener and the
IRaceObjectsListener are not thread-safe (Reported by Axel Uhl, 01/06/2021)
********************************************
TracAPI 3.13.9
********************************************
This is a final version. It keeps the backward compatibility.
Release date: 01/06/2021
Build number:
1) Bugs
Compiled using a wrong version of Java
********************************************
TracAPI 3.13.8
********************************************
This is a final version. It keeps the backward compatibility.
Release date: 01/06/2021
Build number:
1) Bugs
- The UPDATE RACE messages are always sent (Requested by Jorge Piera, 01/06/2021)
********************************************
TracAPI 3.13.7
********************************************
This is a final version. It adds two new values to the RaceCompetitorStatusType
Release date: 02/03/2021
Build number: 2d21ce3085f8a4c915fc9d81b09d1c0518e349c4
1) Bugs
- Adding NSC and TLE to the RaceCompetitorStatusType (Requested by Radek Maskina, 26/02/2021)
********************************************
TracAPI 3.13.6
********************************************
This is a final version. It fixes a bug. It keeps the backward compatibility.
Release date: 11/01/2021
Build number: 73b39ce774c7ee4d372ac6afd4c9302227b26229
1) Bugs
- ConcurrentModificationException sending a notification to the app (Reported by Axel Uhl, 08/01/2021)
********************************************
TracAPI 3.13.5
********************************************
This is a final version. It fixes a bug. It keeps the backward compatibility.
Release date: 02/12/2020
Build number: a589499d3cbc6c517faf088b95c8164d706fdab7
1) Bugs
- NullPointerExcpetion creating an IRace if the parameters file has not been successfully loaded
(Reported by Axel Uhl, 01/08/2020)
********************************************
TracAPI 3.13.4
********************************************
This is a final version. It fixes a bug. It keeps the backward compatibility.
It keeps the backward compatibility.
Release date: 17/08/2020
Build number: 3949342626e65a5d7f19bcc21ebd5146e2b3fdac
1) Bugs
- If a race is not initialized and the race start time is edited, the library invokes
the method IRacesListener.abandonRace (Reported by Axel Uhl, 15/08/2020)
********************************************
TracAPI 3.13.3
********************************************
This is a final version. The only difference with the previous version is the JDK used to compile the sources.
It keeps the backward compatibility.
Release date: 01/05/2020
Build number: dfa0d7732ebb374236628868810547d28a357f92
1) Bugs
- The previous version was compiled using Java 13 (Reported by Axel Uhl, 01/05/2020)
********************************************
TracAPI 3.13.2
********************************************
This is a final version. It adds fixes some features. It keeps the backward compatibility.
Release date: 30/04/2020
Build number: 242936347afa7ec28fc8b61996caf92693ab11af
1) Bugs
- Checking if a control exists before to add it to the route (Reported by Axel Uhl, 24/03/2020)
- The EventFactory has to synchronize the access to the "Map of IControls" (Reported by Axel Uhl, 30/04/2020)
********************************************
TracAPI 3.13.1
********************************************
This is a final version. It adds a some features. It keeps the backward compatibility.
Release date: 25/02/2020
Build number: d2f214ace35bbbadea56f24c834960dbaef78857
1) Features
- Adding the method IRace.getStatusTime() to get the time stamp when the race status
was changed last time (Requested by Axel Uhl, 24/02/2020)
********************************************
TracAPI 3.13.0
********************************************
This is a final version. It changes the enumerate RaceStatusType, breaking the backward compatibility:
- RaceStatusType.FINAL is renamed to RaceStatusType.OFFICIAL
- RaceStatusType.FINISHED is renamed to RaceStatusType.UNOFFICIAL
Release date: 15/01/2019
Build number: 41b9774f520978e2bc4596d82da891c5c77d8da8
********************************************
TracAPI 3.12.5
********************************************
This is a final version. It adds a some features. It keeps the backward compatibility.
Release date: 21/11/2019
Build number: 27eb535e
1) Features
- If the sport is Orienteering/Route sport the API wont't retrieve the control positions from the server (Requested
by Jorge Piera, 29/07/2019)
- If the start time type is Individual and the competitor has start time, the API discards the positions two minutes
before the start (Requested by Jorge Piera, 29/07/2019)
- Adding the method IEvent.getWebURL (Requested by Axel Uhl, 20/11/2019)
********************************************
TracAPI 3.12.4
********************************************
This is a final version. It fixes some bugs. It keeps the backward compatibility.
Release date: 19/07/2019
Build number: 0579368
1) Bugs
- The IRaceCompetitor.getMetadata() was not updated in live (Reported by Jorge Piera, 13/07/2019)
- The IEventSubscriber.start() can throw a NullPointerException when it is created from an
MTB file (Reported by Alex Uhl, 16/07/2019)
********************************************
TracAPI 3.12.3
********************************************
This is a final version. It adds a some features. It keeps the backward compatibility.
Release date: 30/05/2019
Build number: 7a3b63b1
1) Features
- Adding the methods IRaceCompetitor.getOfficialRank() and IRaceCompetitor.getOfficialFinishTime()
(Requested by Martin Frosch, 29/05/2019)
2)
********************************************
TracAPI 3.12.2
********************************************
This is a final version. It adds a some features. It keeps the backward compatibility.
Release date: 29/05/2019
Build number: e939148b
1) Features
- Adding some extra values to the RaceCompetitorStatusType (Requested by Martin Frosch,
28/05/2019)
2) Bugs
********************************************
TracAPI 3.12.1
********************************************
This is a final version. It fixes bugs in the implementation and it adds a some features.
It keeps the backward compatibility.
It keeps the backward compatibility:
Release date: 10/05/2019
Build number: c547c9b
1) Features
- When a race is loaded from a file, the percentage of loaded data was inaccurate
and to fix this issue the MTB reader has been reimplemented. Now the reading time
is faster (Requested by Andr? Borud, 07/05/2019)
2) Bugs
********************************************
TracAPI 3.12.0
********************************************
This is a final version. It changes the enumerate RaceStatusType,
breaking the backward compatibility:
- The new RaceStatusTypes requested by Swiss Timing are:
- NONE (NONE)
- START (STR_SEQ)
- RACING (RAC)
- FINISHED (FSHD)
- ABANDONED (ABDN)
- FINAL (FINAL)
- GENERAL_RECALL (GNR_REC)
- POSTPONED (PSP)
- TracAPI establishes equivalences with the old and the new statuses:
- PENDING -> NONE
- START_PHASE -> START
- RUNNING -> RACING
- CANCELLED -> ABANDONED
- UNSCHEDULED -> NONE
- PRESCHEDULED -> NONE
- SCHEDULED -> NONE
- FINISHING -> RACING
Release date: 27/03/2019
Build number: f52717c06bb047a747030e3ea450e15b609edf73
1) Features
- Updating the list of race statuses (Requested by Radek Masnika, 01/03/2019)
********************************************
TracAPI 3.11.1
********************************************
This is a final version.It fixes bugs in the implementation.
It keeps the backward compatibility:
Release date: 19/10/2018
Build number: 6c0010208212c2aad1016bd69708bc6859e371e9
1) Bugs
- Validating null values for the methods of the IRaceSubscriber that accept an array of
Classes (Reported by Andre Borud, 05/09/2018)
- The IEventSubscriber is not able to connect to the server if the IEvent has been created
using the IEventFactory.createEvent(URL) method and the URL uses HTTPs. It only works using HTTP
(Reported by Thomas Scott, 19/10/2018)
********************************************
TracAPI 3.11.0
********************************************
This is a final version. It changes the implementation of the IRaceSubscriber interface,
breaking the backward compatibility:
- The methods IRaceSubscriber.subscribeRoutes() and IRaceSubscriber.unsubscribeRoutes()
have been removed.
- The IRoutesListener has been removed.
- The IControlRouteChangeListener has been extended adding a new method to get updates
of a IPathRoute. If you are managing "sailing events" this method will never be invoked.
- When any of the attributes of the route is updated, will be notified using the
IRaceSubscriber.subscribeRouteChanges(IControlRouteChangeListener) method
Release date: 30/07/2018
Build number: 416b827959b696583cce509ac39b7fd64aaefe9b
1) Features
- Merging the subscriptions IRaceSubscriber.subscribeRouteChanges and IRaceSubscriber.subscribeRoutes
in the same method (Requested by Axel Uhl, 23/07/2018)
2) Bugs
- When the client is offline, if it tries to load a race it gets a RaceLoadingException. But then,
when the client is online again, it can't reuse the same race because it is in an internal wrong
status (Reported by Thomas Scott, 19/06/2018)
********************************************
TracAPI 3.10.1
********************************************
This is a final version.It fixes bugs in the implementation and it adds a some features.
It keeps the backward compatibility:
Release date: 28/06/2018
Build number: 35a26e503339fff26fe984617e5190a18438e10b
1) Features
- Adding a method to retrieve positions by class id (Requested by Chris Terkelsen, 07/05/2018)
2) Bugs
- When the client is offline, if it tries to load a race it gets a RaceLoadingException. But then,
when the client is online again, it can't reuse the same race because it is in an internal wrong
status (Reported by Thomas Scott, 19/06/2018)
- The live delay is not propagated (sometimes). This feature has been reimplemented and now the
value is attached and sent with the race object using the same approach used to transmit the race
start time or the tracking start time (Reported by Axel Uhl, 19/06/2018)
********************************************
TracAPI 3.10.0
********************************************
This is a final version. It changes the implementation of the ISensorData interface, breaking the
backward compatibility:
Release date: 02/03/2018
Build number: a0cbb8116ab0917334b9b323db6664671a05f79b
1) Features
- Updating the interface ISensorData (Requested by Axel Uhl, 01/03/2018)
********************************************
TracAPI 3.9.0
********************************************
This is a final version. It changes the implementation of the ISensorData interface, breaking the
backward compatibility:
Release date: 01/03/2018
Build number: 8fdd19ee81b3ccbfc2694963e8e398346eebde7a
1) Features
- Updating the interface ISensorData (Requested by Axel Uhl and Jakob Odum, 22/11/2017)
- Support for https downloading MTBs (Requested by Axel Uhl, 07/01/2018)
********************************************
TracAPI 3.8.0
********************************************
This is a final version. It change the signature of a method, breaking the
backward compatibility:
- com.tractrac.model.lib.api.event.RaceStatusType enum. UNKNOWN value of this enum type has been renamed to PENDING.
This version provides a new JavaDoc version.
Release date: 22/11/2017
Build number: 14453
1) Features
- com.tractrac.model.lib.api.event.RaceStatusType enum. UNKNOWN value of this enum type has been renamed to PENDING.
(Requested by Chris Terkelsen 24/10/2017)
- Support for sensor data. IRaceSubscriber has been updated adding methods to retrieve sensor data (Requested by SAP)
- When the tracking of a race is initialized, TracAPI also sends the positions of the controls using the tracking start time
as timestamp (Requested by Axel Uhl, 14/11/2017)
********************************************
TracAPI 3.7.7
********************************************
This is a final version. It fixes bugs in the implementation
It keeps the backward compatibility.
Release date: 29/10/2017
Build number: 14453
1) Bugs
- Selector.wakeup() throws an IOException in Android 5. It seems a bug on this platform
(Reported by Andr? Borud, 30/08/2017)
- There is a synchronization bug on the implementation of the IAttachable interface
(Reported by Axel Uhl, 29/10/2017)
********************************************
TracAPI 3.7.6
********************************************
This is a final version.It fixes bugs in the implementation and it adds a some features.
It keeps the backward compatibility.
Release date: 14/08/2017
Build number: 14241
1) Features
- Two new RaceCompetitorStatusType values have been added: 8 (Did not finish) and 9 (Missing data). (Requested by
Chris Terkelsen, 28/07/2017)
2) Bugs
- Releasing the memory when the ISubscriber.close method is called (Reported by Axel Uhl, 04/08/2017)
- The live messages (e.g: race start time updated, live delay updated...) are not arriving sometimes,
despite of the server is sending them all the time. The implementation of this part has been
downgraded to the version used in TracAPI 3.6.x (Reported by SAP)
********************************************
TracAPI 3.7.5
********************************************
This is a final version. It fixes bugs in the implementation
It keeps the backward compatibility.
Release date: 25/07/2017
Build number: 14214
1) Bugs
- When the library calls the IRaceStartStopTimesChangeListener methods,
the IRace object can be not updated (Reported By Axel Uhl, 25/07/2017)
********************************************
TracAPI 3.7.4
********************************************
This is a final version. It fixes bugs in the implementation
It keeps the backward compatibility.
Release date: 25/07/2017
Build number: 14207
1) Bugs
- It is not possible to connect a second time to the ISubscriber object to receive
live notifications if it has been closed before (Reported By Axel Uhl, 24/07/2017)
********************************************
TracAPI 3.7.3
********************************************
This is a final version. It fixes bugs in the implementation
It keeps the backward compatibility.
Release date: 24/07/2017
Build number: 14195
1) Bugs
- When the specific live delay is updated, the EM sends a message with the new and the
old values to the clients. TracAPI checks if the cached value is equals to the old value and
only in this case, it updates the live delay. If the server sends some wrong values or if a message
is lost, the live delay will never be updated and for this reason this validation has been
removed (Reported By Axel Uhl, 24/07/2017)
********************************************
TracAPI 3.7.2
********************************************
This is a final version. It fixes bugs in the implementation
It keeps the backward compatibility.
Release date: 21/07/2017
Build number: 14174
1) Bugs
- IRace.getCourseArea() is not updated when the race is loaded a second time (Reported By Axel Uhl, 21/07/2017)
********************************************
TracAPI 3.7.1
********************************************
This is a final version. It fixes bugs in the implementation and it adds a some features.
It keeps the backward compatibility.
Release date: 21/07/2017
Build number: 14172
1) Features
- RaceStatusType includes a new value: 9 - Final. The meaning of this value is that the related race has finished and the
splits have been validated (Requested by Chris Terkelsen, 18/07/2017).
2) Bugs
- NullPointerException when the client stops the subscription during the loading progress (it happens sometimes).
The data provider is set to null and one of the threads that sends the positions to the app can use it (Reported
By Andr? Borud, 03/07/2017)
- IRace.getEvent() is null when the race is updated (Reported By Axel Uhl, 21/07/2017)
********************************************
TracAPI 3.7.0
********************************************
This is a final version. It fixes bugs in the implementation and it adds some new features.
These features add methods to the API keeping the backward compatibility with the releases
3.6.x. The minor version has been increased from 6 to 7 because there are some important
changes in the implementation.
This version provides a new JavaDoc version.
Release date: 28/07/2017
Build number: 14122
1) Features
- RaceCompetitorStatusType: New race competitor status type defined: F_CONFIRMED. Represents a competitor with a
control passing registered for the last gate/mark that is accepted as the official result (Requested by Ugo
Alvazzi, 26/04/2017)
- WebSockets support: instead of using a TCP connection is possible to retrieve data using WebSockets (using the
same protocol used by the HTML Viewer). The protocol is not fully implemented and it only has to be used for testing
(Requested by Jorge Piera, 30/04/2017).
- Use an asynchronous API: the dataserver implementation has been migrated to an asynchronous API that provides
a better performance downloading replay data (the tests show that is 2.5 times faster). TracAPI has also adopted
this new asynchronous interface but at this moment it continues using the synchronous approach (Requested by Jorge
Piera, 03/05/2017)
- Adding the method ISubscriberFactory.clean to release the objects in memory (Requested by Andr? Borud, 01/06/2017)
- Adding the method IPosition.isGPSTiming to know is the time of a position has been retrieved from a physical
GPS device (Requested by J?rome Soussens, 21/06/2017)
2) Bugs
- When a static control is updated, the IControlPointPositionListener.gotControlPointPosition event
is not called if the consumer application is not registered to the IEventSubscriber (Reported by
Axel Uhl, 18/06/2017)
- The live delay sometimes is not propagated. The server always propagates the event but TracAPI can
filter it if the IEventSubscriber is not being used or if it has not been correctly initialized
using the right live-uri (Reported by Julian Mayland, 21/06/2017)
********************************************
TracAPI 3.6.3
********************************************
This is a final version. It adds support for these new features:
- IMetadataContainer: Fixed bug in IMetadataContainer implementation. Metadata received through serialized objects was not being parsed.
Release date: 10/04/2017
Build number: -
********************************************
TracAPI 3.6.2
********************************************
This is a final version. It adds support for these new features:
- IControlPoint.getId() will return null when the control point is part of a line and the related IControl do not have
the properties P1.UUID/P2.UUID defined.
Release date: 06/04/2017
Build number: -
********************************************
TracAPI 3.6.1
********************************************
This is a final version. It adds support for these new features:
- IControl and IRace now have a method getCourseArea() that returns the course area.
- IControlPoint has a getId method that returns the UUID. It will be initialized with the value set in the P1.UUID and
P2.UUID properties defined in the parent IControl. In case these properties are not defined the UUID will fallback to
the parent IControl UUID.
Release date: 04/04/2017
Build number: 13554
This version provides a new JavaDoc version.
********************************************
TracAPI 3.6.0
********************************************
This is a final version. It change the signature of a couple of methods, breaking the
backward compatibility. These changes are:
- The IEventFactory.createRace(URI) doesn't throw the TimeOutException.
- The IEventFactory.createRace(URI, URI, URI) doesn't throw the TimeOutException.
This version provides a new JavaDoc version.
Release date: 08/03/2017
Build number: 13498
1) Features
- Removing the TimeOutException of some methods of the IEventFactory (Requested by Axel Uhl, 08/03/2017)
********************************************
TracAPI 3.5.0
********************************************
This is a final version. It fixes bugs in the implementation and it adds some new features.
These features add methods to the API breaking the backward compatibility. These changes are:
- The IRaceCompetitor interface changes the return type of the getStatusTime method
from Date to long.
- The methods IEventFactory.createRace throw now a TimeOutException when there is a timeout
downloading the parameters file.
This version provides a new JavaDoc version.
Release date: 07/03/2017
Build number: 13490
1) Features
- Updating the return type of the IRaceCompetitor.getStatusTime from Date to long to
be consistent with the API (Requested by Jorge Piera, 13/02/2017)
- Adding the methods ISegment.getExtent(), the IRoute.getExtent() and IRace.getExtent()
that return the extent of the object (Requested by Jorge Piera, 23/02/2017)
- Adding an extra parameter to the IEventFactory.createRace methods to indicate
the timeout used to download the parameters file. The IEventFactory also includes a method
getDefaultTimeOut that returns the default timeout (Requested by Axel Uhl, 06/03/2017)
********************************************
TracAPI 3.4.1
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 20/02/2017
Build number: 13415
1) Bugs
- TracAPI doesn't send all data when the races are retrieved in parallel.
It is an error in the thread that executes the callback messages that in some
internal circumstances, doesn't execute the callback (Reported by Axel Uhl,
13/02/2017)
********************************************
TracAPI 3.4.0
********************************************
This is a final version. It fixes bugs in the implementation and it adds some new features.
These features add methods to the API breaking the backward compatibility. These changes are:
- The IRacesListener interface implements a new method dataSourceChanged. If
your app implements this interface, you have to implement this extra method.
This version provides a new JavaDoc version.
Release date: 31/01/2017
Build number: 13339
1) Features
- Adding the method IRace.getDataSource that returns the datasource used by the race
to load data (Requested by Axel Uhl, 25/01/2017)
- Adding the method IRacesListener.dataSourceChanged that sends a notification
every time that the datasource of a race changes (Requested by Axel Uhl, 25/01/2017)
2) Bugs
- Call IRaceSubscriber.unsubscribePositions() after IRaceSubscriber.start() generates a NullPointerException
(Reported by Jerome Soussens, 24/01/2017)
********************************************
TracAPI 3.3.1
********************************************
This is a final version. It fixes bugs in the implementation and it adds some new features.
These features add methods to the API, but they keep the backward compatibility.
This version provides a new JavaDoc version.
Release date: 17/01/2017
Build number: 13262
1) Features
- When a race is in live, the library starts to download stored data from the time when the library connects
allowing to the user show data as fast as the first data stream arrives. Then, the library starts to download
the rest of the old data. (Requested by Jakob Odum, 25/09/2016)
- Adding the method IEventFactory.deleteCache that removes all the previous cached objects (Requested by Andre
Borud, 14/12/2016)
- Changing the synchronization of the UtilLocator.createParamerSet method. It was synchronized at method level
but it is only necessary to synchronize the initialization of the factory and not the usage (Requested by Axel Uhl,
17/01/2017)
2) Bugs
- The ICompetitorClass implementation can contain duplicate entries of different implementations. (Reported by
Juan Salvador Prez, 16/01/2017)
********************************************
TracAPI 3.3.0
********************************************
This is a final version. It fixes bugs in the implementation and it adds some new features.
These features add methods to the API breaking the backward compatibility. These changes are:
Release date: 21/09/2016
Build number: 12935
1) Features
- Adding the method IRaceCompetitorListener.updateRaceCompetitor that is thrown when a race
competitor is updated (Requested by Jerome Soussens, 21/09/2016)
********************************************
TracAPI 3.2.2
********************************************
This is a final version. It fixes bugs in the implementation and it adds a some features.
These features add methods to the API, but they keep the backward compatibility.
This version provides a new JavaDoc version.
Release date: 21/09/2016
Build number: 12927
1) Features
- Adding the method ISubscriber.isRunning() to know if the thread created by the ISubscriber.start() method
is running or not (Requested by Jorge Piera, 04/08/2016).
- Added attribute in the IRaceCompetitor interface: statusTime. It will contain the time when an entry has changed
its status to abandoned/retired.
- Added new value to the RaceCompetitorStatusType enum: NO_COLLECT. This value means that the competitor didn't
collected the tracker.
2) Bugs
- When an static control is added (or updated), the timestamp has to be the event start time. At this moment
it is using the timestamp when whe control was created (Reported by Steffen Wagner, 12/09/2016)
********************************************
TracAPI 3.2.1
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 13/07/2016
Build number: 12627
1) Bugs:
- If the Internet connection goes down, some threads can be hung despite of
the consumer application calls the ISubscriber.stop method (Reported by
Axel Uhl, 13/07/2016)
********************************************
TracAPI 3.2.0
********************************************
This is a final version. New functionality added:
Release date: 05/06/2016
Build number: 12293
1) Features:
- IRace adds the new property, status, returning a value of the enum RaceStatusType.
- IRace property visibility has changed to return a value of the enum RaceVisibilityType.
- IRaceCompetitor adds a new property: status of type RaceCompetitorStatusType.
- Competitor updates during a race will be propagated to all subscriptors.
********************************************
TracAPI 3.1.6
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 22/02/2016
Build number: 11976
1) Bugs
- The bug of the previous release (3.1.2) was not fixed.
********************************************
TracAPI 3.1.5
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 17/02/2016
Build number: 11948
1) Bugs
- The bug of the previous release (3.1.2) was not fixed.
********************************************
TracAPI 3.1.4
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 15/02/2016
Build number: 11938
1) Bugs
- An infinity loop has been detected in the thread that sends the application
messages (Repored by Axel Uhl, 12/02/2016)
********************************************
TracAPI 3.1.3
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 25/01/2016
Build number: 11888
1) Bugs
- The bug of the previous release (3.1.2) was not fixed.
********************************************
TracAPI 3.1.2
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 21/01/2016
Build number: 11864
1) Bugs
- The ISubscriber.stop() method never finishes due to a deadlock (it happens sometimes).
There is a deadlock between one of the internal threads responsible to update the progress
and the thread that calls the stop method. The release 3.1.1 fixed a part of the bug but
it continues happening due to a new deadlock (Reported by Axel Uhl, 20/01/2016)
********************************************
TracAPI 3.1.1
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 18/01/2016
Build number: 11844
1) Bugs
- The ISubscriber.stop() method never finishes due to a deadlock (it happens sometimes).
There is a deadlock between one of the internal threads responsible to update the progress
and the thread that calls the stop method (Reported by Axel Uhl, 16/11/2015)
********************************************
TracAPI 3.1.0
********************************************
This is a final version. It fixes bugs in the implementation and it adds some new features.
These features add methods to the API breaking the backward compatibility. These changes are:
- The IRaceCompetitorListener interface implements a new method removeOffsetPositions. If
your app implements this interface, you have to implement this extra method.
This version provides a new JavaDoc version.
Release date: 11/12/2015
Build number: 11801
1) Features
- Adding the method IRaceCompetitorListener.removeOffsetPositions that is invoked
to invalidate a set of positions. It is used when the event administrator detects
an error in the snapping algorithm (in route sports) and he want to remove the wrong
positions (Requested by Chris Terkelsen, 26/11/2015)
- Adding the method IControl.getMapName() that contains the name that has to be used to
display the control on the map (Requested by Chris Terkelsen, 09/12/2015)
2) Bugs
- The static controls send a position event using the race start time instead the
event start time. (Reported by Jerome Soussens, 11/12/2015)
********************************************
TracAPI 3.0.14
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 29/09/2015
Build number: 11514
1) Bugs
- NullPointerException caused by a synchronization error (Reported by J?rome Soussens, 28/09/2015)
********************************************
TracAPI 3.0.13
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 23/09/2015
Build number: 11448
1) Features
- The script that generates the final version also includes a jar with the source code of the APIs
(Requested by Axel Uhl, 07/09/2015)
2) Bugs
- When a new race is updated, the IRace.getParamsURI() is updated to null. (Reported by Juan Salvador P?rez, 10/09/2015)
- The IRace.getMetadata(), ICompetitor.getMetadata and IControl.getMetadata() methods are not refreshed in
the model when the objects are updated in the event manager (Reported by Jorge Piera, 23/09/2015)
********************************************
TracAPI 3.0.12
********************************************
This is a final version. It fixes bugs in the implementation and it adds a some features.
These features add methods to the API, but they keep the backward compatibility.
This version provides a new JavaDoc version.
Release date: 07/08/2015
Build number: 11130
1) Features
- Adding the method ISubscriberFactory.setUserId(userId) used to configure a valid user with permissions
to retrieve data from the TracTrac servers. (Requested by Jorge Piera, 18/06/2015)
2) Bugs
- If the consumer application is not subscribed to the events that manage the addition of new "objects"
in the system (e.g: add control, add competitor...), it is never going to receive the events related
with these "objects". It is an error of design in TracAPI because it has been designed "thinking"
that the consumer application is always subscribed to receive all the events. The solution is simple:
TracAPI is always going to subscribe to all the events to guarantee that the static model is always
updated and to guarantee that if the consumer application is subscribed to a type of event it is always
going to receive all the events of this type. There is a secondary effect: the consumer application can
receive events with new objects. (Reported by Axel Uhl, 20/07/2015)
********************************************
TracAPI 3.0.11
********************************************
This is a final version. It fixes bugs in the implementation and it adds a some features.
These features add methods to the API, but they keep the backward compatibility.
This version provides a new JavaDoc version.
Release date: 27/05/2015
Build number: 10715
1) Features
- Adding the method IRace.setInitialized(boolean) that allows to load control point positions despite of
the race is not initialized (Requested by Jorge Piera, 17/05/2015)
1) Bugs
- The subscription library sends (per each control point) an "ControlPointPosition" event with the positions
of the parameters with a time stamp equals to the tracking start time. If the control point is static (it
doesn't have a tracker), it means that this control won't exist until the tracking start time arrives: it is
not possible to open a subscription connection before the tracking start time and see the control point. But
if the control is static, it has to exist during all the event. Now when a control is static, the subscription
library sends a "ControlPointPosition" event with the event start time and then it sends other "ControlPointPosition"
event with the tracking start time. It allows to connect with future races and see the static controls (Requested
by Jakob Odum, 25/02/2015)
- It is possible to add two or more subscriptions for the same subscriber (Reported by Jorge Piera, 02/05/2015)
- An initialized race is a race where the tracking is on. A not initialized race is a race where the tracking is off.
If a race is in a not initialized state and it is loaded using the parameters file, the library assumes that the
consumer application wants to load the race and it changes its initialized attribute to true (the tracking is on).
This assumption is wrong. Now, if a race is not initialized it will continue being uninitialized until the event
administrator changes its state to initialized.
When a race changes its state from not initialized to initialized, some events are thrown in the system:
1. IRaceStartStopTimesChangeListener.gotTrackingStartStopTime(IRace, IStartStopData): where the IStartStopData object contains the new tracking interval.
2. IRacesListener.startTracking(UUID): the UUID is the race identifier
3. IRacesListener.updateRace(IRace): IRace is the new updated race where the IRace.isInitialized is true and it has values for both the getTrackingStartTime and the getTrackingEndTime methods.
When a race changes its state from initialized to not initialized, the following events are thrown in the system:
1. IRaceStartStopTimesChangeListener.gotTrackingStartStopTime(IRace, IStartStopData): where the IStartStopData object contains the null interval ([0, 0])
2. IRacesListener.abandonRace(UUID): the UUID is the race identifier
3. IRacesListener.updateRace(IRace): IRace is the new updated race where the IRace.isInitialized is false and it has null values for both the getTrackingStartTime and the getTrackingEndTime methods.
(Reported by Axel Uhl, 17/05/2015)
********************************************
TracAPI 3.0.10
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 17/02/2015
Build number: 9938
1) Bugs
- It fixes the same bug described in the release 3.0.9 that it was not fixed. The release 3.0.9 fixed
the synchronization issue between different threads but the ConcurrentModificationException happens
when the same thread is accessing to the list. The synchronization at method level doesn't work
in this case (Reported by Axel Uhl,07/02/2015)
********************************************
TracAPI 3.0.9
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 13/02/2015
Build number: 9904
1) Bugs
- There is a ConcurrentModificationException in the IConnectionStatusListener subscription, when a thread
is adding subscriptions/unsubscriptions and other thread is sending events through this listener (Reported
by Axel Uhl,07/02/2015)
********************************************
TracAPI 3.0.8
********************************************
This is a final version. It fixes bugs in the implementation and it adds a some features.
These features add methods to the API, but they keep the backward compatibility.
This version provides a new JavaDoc version.
Release date: 07/02/2015
Build number: 9826
1) New features
- Adding the method IEvent.getEventType that returns the type of the event (e.g: Sailing, Orienteering...).
(Requested by Jorge Piera, 01/02/2014)
2) Bugs
- The changes in the static fields of the route (including the metadata) were not propagated through
the subscription library. Following the same approach used for the races, controls and competitors,
a new listener IRoutesListener has been added to manage these changes. (Reported by Axel Uhl,
06/02/2015)
********************************************
TracAPI 3.0.7
********************************************
This is a final version. It fixes bugs in the implementation and it adds a some features.
These features add methods to the API, but they keep the backward compatibility.
This version provides a new JavaDoc version.
Release date: 19/11/2014
Build number: 9436
1) New features
- The IRace interface implements the method getStartTimeType that returns the type of start time. It is an enumerated
value with the values: Individual (if the competitors have an individual start time), RaceStart (if the race
has a race start time) and FirstControl (if the start of the race happens when the competitor passes for
the first control). The value by default is RaceStart. At this moment this value only can be managed at an event
level (in the event manager) but in a future we will add this functionality at a race level (Requested by
Jrome Soussens, 14/10/2014)
- The method IControlPoint.getPosition is deprecated. Use the IControlPointPositionListener.gotControlPointPosition()
to know the position of a control point (Reported by Jorge Piera, 28/10/2014)
- Adding the isNonCompeting() method to the ICompetitor interface. If a competitor is a non competing competitor
doesn't receive control passings attached to it. It only receives positions (Requested by J?rome Soussens, 15/10/2014 and
Axel Uhl, 22/10/2014)
2) Bugs
- It checks that the system of messages doesn't generates a BufferOverflow exception. We added a bug on the server
sending wrong strings to the clients and this error thrown an exception on the clients that killed one of threads.
Now the tracapi checks if there is an error encoding the strings and in this case, logs the exeption discarding
the message but the thread, continues running. Anyway the error has been fixed in the server side. (Reported by
Jorge Piera, 30/09/2014)
- If there is a control point without coordinates the lat,lon values are not included in the parameters file
and the library doesn't create the IControlPoint. Now, the library creates the IControlPoint and it returns
the values Double.MAX_VALUE for both the lat and the lon. This position is not sent by the
IControlPointPositionListener.gotControlPointPosition(). (Reported by Jakob Odum, 28/10/2014)
- There is a synchronization bug registering and sending messages using the General Message System. The list
that is used to register the listeners is not a synchronized list. This bug has been fixed (Reported by Axel Uhl, 19/11/2014,
http://bugzilla.sapsailing.com/bugzilla/show_bug.cgi?id=2474)
********************************************
TracAPI 3.0.6
********************************************
This is a final version. It fixes bugs in the implementation and it adds a new feature.
This new feature adds methods to the API, but it keeps the backward compatibility.
This version provides a new JavaDoc version.
Release date: 11/08/2014
1) New features
- The IRaceCompetitor implements the IMetadataContainer interface (Requested by Frank Mittag, 16/07/2014)
2) Bugs
- The race name and the visibility are not updated in the IRacesListener.update() method.
(Reported by Jorge Piera, 06/08/2014)
- The IRaceCompetitor doesn't contains the associated IRoute object (Reported by Jorge Piera, 08/08/2014)
- Changing the synchronization of the maps in the EventFactory (Reported by Axel Uhl, 09/08/2014)
********************************************
TracAPI 3.0.5
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 05/08/2014
1) Bugs
- The previous version 3.0.4 added only changes in the synchronization. The lists were synchronized by hand
but the implementation continued using synchronized lists. The result was that we had a double
synchronization for all the lists of the model: the synchronization by hand and the synchronization of
the list. (Reported by Axel Uhl, 04/08/2014)
- The new subscription library sends the static positions (from the parameters file) as positions events.
The problem here is that the subscription library retrieves the positions from the model of control
points and when some races are loaded in parallel these values can be invalid (values loaded by
other race). Now the subscription library sends the static positions from the parameters file.
(Reported by Jorge Piera, 04/08/2014)
********************************************
TracAPI 3.0.4
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 04/08/2014
1) Bugs
- Some lists are not thread-safety. The model project exposes some lists based on a
CopyOnWriteArrayList implementation that is thread-safety if you get its iterator.
But if before to invoke the iterator() method of the list, other thread is editing the list,
it is possible to get a list in an invalid status. (Reported by Axel Uhl, 31/07/2014)
********************************************
TracAPI 3.0.3
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 25/07/2014
1) Bugs
- When a race is reloaded more than one time it keeps the entries despite of they have been removed. The new entries
are correctly added but the removed competitors are kept. (Reported by Axel Uhl, 25/07/2014)
********************************************
TracAPI 3.0.2
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 24/07/2014
1) New features
- The IRacesListener.updateRace() event is thrown when the live delay for a race has changed. The IRace.getLiveDelay() method
returns the new value.
2) Bugs
- The events IRacesListener.abandonRace() and IRacesListener.startTracking() have been reviewed. Now they are always sent
when the races are updated either using the event manager or using the external JSON service "update_race_status"
- The controls are not updated when they are retrieved a second time from a parameters file. The library always returns
the first control that was read the first time. (Reported by Axel Uhl, 24/07/2014)
********************************************
TracAPI 3.0.1
********************************************
This is a final version. Only fixes bugs in the implementation
Release date: 09/06/2014
1) Bugs
- Error reading JSON of races.
********************************************
TracAPI 3.0.0
********************************************
This is a final version.
Release date: 04/06/2014
1) New features
- The positions of the static marks are sent like an event
- The static start/end tracking times and the static start/end race times are sent like an events
- The static course is sent like an event
- The IConnectionListener.stopped() method uses an object as argument
- The start/end tracking times are 0l if the race has not been initialized
- Added the IRaceListener.startTracking event
- Added the IRace.getExpectedRaceStartDate()
- Added the IRace.isInitialized()
- Added the IRace.getVisibility()
2) Bugs
- Error reading the race start time from the JSON
- Synchonizating the locators used to retrieve objects using the Service Provider Interface
********************************************
TracAPI 3.0.0-SNAPSHOT
********************************************
This is an SNAPSHOT version that means that is a version that has not been released (is under development).
1) Bugs
- The route name is lost when the ControlRouteChange event is thrown
- Adding synchronized lists in some objects of the model that were not synchronized
- Fixing an error using a local parameters file with a local MTB file
- Fixing several errors marshaling the objects then an static property has been changed
- Fixing a bug parsing a JSON with races that has races without params_url (for Orienteering events)