Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/target
/src/main/resources/images
/src/main/resources/view
/javafx-sdk-17.0.18/
76 changes: 51 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
# Speed Guide
The Speed Guide utility allows users and developers, who do not have access to **LSEG Workspace/Eikon** desktop applications, a simple and quick way to easily browse market data content available within Refinitiv's Data Platform. The following guide outlines the fundamental purpose of speed guides and provides basic instructions to use the utility. In addition, outlines the components and basic instructions to build the tool using the source code available within this project.

The Speed Guide utility allows users and developers, who do not have access to **LSEG Workspace** desktop applications, a simple and quick way to easily browse market data content available within LSEG Real-Time Platform. The following guide outlines the fundamental purpose of speed guides and provides basic instructions to use the utility. In addition, outlines the components and basic instructions to build the tool using the source code available within this project.

# Overview
#### Important Note

The Speed Guide utility allows users and developers who do not have access to the desktop application to browse market data content available from Refinitiv's Data Platform. The utility provides access to either cloud-based, Real-Time -- Optimized services or directly to your deployed Real-Time servers.
**This Speed Guide tool is intended solely for demonstration and data exploration purposes and must not be deployed in any production environment. It is provided "AS IS," without warranty of any kind, express or implied, including but not limited to warranties of merchantability, fitness for a particular purpose, or non-infringement. No service level agreement (SLA), product support, or maintenance obligations are provided or implied.**

When building applications consuming streaming market data, developers often need a list of RICs (Refinitiv Instrument Codes), and the values they contain, for certain market, exchange, or instrument types.  The list of fields provided for these instrument types will differ depending on the type of asset. To aid in the discovery and understanding of these assets, the Speed Guide utility is a graphical tool presenting data screen displays. These data screens, or ***speed guides***, help users navigate through the universe of RICs and list the fields available for the specific asset. Developers will be presented with a simple organization of the data to gain a better understanding which includes complex structures such as Option Chains, Indices, Futures, etc.
**If you have any questions regarding how to use the tool, do not contact the Support team but please post the question on the Developer Portal [Q&A forum](https://community.developers.lseg.com/) page.**

## Overview

The Speed Guide utility allows users and developers who do not have access to the desktop application to browse market data content available from LSEG Real-Time Platform. The utility provides access to either cloud-based, Real-Time -- Optimized services or directly to your deployed Real-Time servers.

When building applications consuming streaming market data, developers often need a list of RICs (Instrument Codes), and the values they contain, for certain market, exchange, or instrument types.  The list of fields provided for these instrument types will differ depending on the type of asset. To aid in the discovery and understanding of these assets, the Speed Guide utility is a graphical tool presenting data screen displays. These data screens, or ***speed guides***, help users navigate through the universe of RICs and list the fields available for the specific asset. Developers will be presented with a simple organization of the data to gain a better understanding which includes complex structures such as Option Chains, Indices, Futures, etc.

The Speed Guide tool registers for Snapshot only data content (i.e, non-streaming).

Expand All @@ -16,7 +22,7 @@ The executable program and Readme is available for Download within the [LSEG Dev

## Running the Utility

The Speed Guide utility provides the ability to connect directly to the Refinitiv Data Platform, via Refinitiv Real-Time -- Optimized or access through your deployed Real-Time streaming server (ADS) available within the Refinitiv RTDS (Real-Time Distribution System).
The Speed Guide utility provides the ability to connect directly to the Real-Time -- Optimized (RTDS) or access through your deployed Real-Time streaming server (ADS) available within the RTDS (Real-Time Distribution System).

The package includes 2 components offering multiple ways to launch the tool. Packaged are:

Expand All @@ -30,21 +36,32 @@ Double-clicking either the _.jar_ or _.exe_ file will not pass any required conn

If the required parameters are not specified, the application will present a [Connection Dialog](#usage) requesting for the required connection details. In either case, no console is involved thus no additional messages, such as log messages, can be viewed.

**Note**: Launching the executable JAR requires the [Javaw](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html) program to open it. When not associated, you will be presented with a request such as:
**Note**: Launching the executable JAR requires the [Java Web Start](https://docs.oracle.com/javase/8/docs/technotes/guides/javaws/) (javaw) program to open it. When not associated, you will be presented with a request such as:

![program](images/jarExtension.png)

You will need to choose the Javaw program within your Java installation.

### Launching the tool from the console

Before running, please download the [JavaFX library](https://openjfx.io/) version that matches to your Java version to your machine. You can see the JDK and JavaFX compatibility information [here](https://gluonhq.com/products/javafx/).

At the console, you can pass command-line parameters to the utility:

* #### Launching the executable JAR

\> **java -jar SpeedGuide.jar [connection parameters]**
\> **java --module-path ".\javafx-sdk-version\lib" --add-modules javafx.controls,javafx.fxml,javafx.base,javafx.graphics -jar ".\SpeedGuide.jar" [connection parameters]**

Or

\> **java -cp ./SpeedGuide.jar --module-path ./javafx-sdk-version/lib --add-modules javafx.controls,javafx.fxml,javafx.base,javafx.graphics com.lseg.ema.example.gui.SpeedGuide [connection parameters]**

When launching the executable JAR, users optionally specify command-line options and have the opportunity to see the output on the console.

See examples below.

![example](images/run_speedguide.png)


* #### Launching the windows wrapper EXE

Expand Down Expand Up @@ -96,8 +113,11 @@ At the console, you can pass command-line parameters to the utility:

--d[ebug] Debug Mode. Display verbose messages to the console
--h[elp] Prints this screen

The following example shows the command-line parameters to connect to either an ADS or directly to Real-Time -- Optimized in the cloud.

* java --module-path ".\javafx-sdk-17.0.18\lib" --add-modules javafx.controls,javafx.fxml,javafx.base,javafx.graphics -jar ".\SpeedGuide.jar" --host=MY_ADS:14002 --username=USER1 --service=ELEKTRON_DD
* java -cp ./SpeedGuide.jar --module-path ./javafx-sdk-21.0.10/lib --add-modules javafx.controls,javafx.fxml,javafx.base,javafx.graphics com.lseg.ema.example.gui.SpeedGuide --clientId=GE-XXXX1234XXXX --clientSecret=9x999999-9xxx-9999-9x99-9x9xx99x9x99 --region=ap-northeast-1
* SpeedGuide.exe --host=myserver:14002 --service=ELEKTRON_AD --user=testuser --appid=256 --position=127.0.0.1
* SpeedGuide.exe --clientId=GE-XXXX1234XXXX --clientSecret=9x999999-9xxx-9999-9x99-9x9xx99x9x99
* SpeedGuide.exe --clientId=GE-123X9ABCDE9Z --clientSecret=9z123456-9abc-5555-9a12-1a2bc34d5e67 --region=eu-west-1
Expand Down Expand Up @@ -162,35 +182,43 @@ To demonstrate, we manually entered the Nasdaq Top 25 index _.AV.O_:

We can see from above, the record contains a preset number of elements (1-14) and the ability to pull up the next group of elements within the _next link_. For a detailed outline of Chains, refer to the article: [Simple Chain Objects](https://developers.lseg.com/article/simple-chain-objects-ema-part-1) within the Developer Community.

Feel free to navigate through the guide to discover many other assets and data elements offered by Refinitiv.
Feel free to navigate through the guide to discover many other assets and data elements offered by LSEG.

# Solution Code

The utility was developed using the [Refinitiv Real-Time SDK - Java](https://developers.lseg.com/en/api-catalog/refinitiv-real-time-opnsrc/rt-sdk-java) and Java's GUI library Java 8 - JavaFx.
The utility was developed using the [Real-Time SDK - Java](https://developers.lseg.com/en/api-catalog/real-time-opnsrc/rt-sdk-java) and Java's GUI library Java - JavaFx.

## Prerequisites

Required software components:

* [Refinitiv Real-Time SDK - Java](https://developers.lseg.com/en/api-catalog/refinitiv-real-time-opnsrc/rt-sdk-java) (2.0.1.L1 or greater) - Refinitiv interface to streaming, real-time services.
* [JDK 8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) - Java Development Kit - version 8.
* [Real-Time SDK - Java edition](https://developers.lseg.com/en/api-catalog/real-time-opnsrc/rt-sdk-java) (2.0.1.L1 or greater) - LSEG Enterprise Message API to streaming, real-time services.
* Supported Java SDKs - Required to build and run the application. Please check supported SDK versions from the [API Compatibility Matrix](https://developers.lseg.com/en/api-catalog/real-time-opnsrc/rt-sdk-java/documentation#api-compatibility-matrix) page.
* [JavaFX library](https://openjfx.io/) - Required for the JavaFX UI components used by this project. Please choose the version that matches to your Java version. You can see the JDK and JavaFX compatibility information [here](https://gluonhq.com/products/javafx/).
Note: Java FX has been removed from the Java SDK by oracle since April 15, 2025 (Java 8 update 451).
* [VScode](https://code.visualstudio.com/Download) - Visual Studio Code


## Building and running

The Java FXML project is a Maven-based solution that generates the desired package for distribution. As defined within the pom.xml configuration file, the packaging uses
the Launch4j plugin to help prepare a Windows package. Users can optionally remove this stanza if there is no desire to generate an EXE file for Windows. If
there is a desire to use this plugin, it assumes the following JDK installation (Note: you can update to suit your environment)
The Java FXML project is a Maven-based solution that generates a bundled distribution package using:

* `maven-shade-plugin` to build the executable JAR with dependencies.
* `jlink` to generate a local runtime image that includes JavaFX modules.
* `launch4j-maven-plugin` to build a Windows EXE that points to the bundled runtime folder.
* `maven-assembly-plugin` to zip the JAR, EXE, and runtime image for distribution.

Build the package using:

```bash
mvn clean package
```
<jre>
<path>C:\Program Files\Common Files\Oracle\javapath</path>
<minVersion>1.8.0</minVersion>
</jre>
```

The project was built using VS Code and Maven.
After packaging, the generated ZIP contains `SpeedGuide.jar`, `SpeedGuide.exe`, and a `runtime/` folder required by the EXE.

## Troubleshooting

**As I have mentioned above. This tool is provided "as" with no service level agreement (SLA). If you have any questions regarding how to use the tool, please post the question on the Developer Portal [Q&A forum](https://community.developers.lseg.com/) page.**

## Contributing

Expand All @@ -200,6 +228,9 @@ Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c6

| **Name** | **Release** | **Details** |
| --- | --- | --- |
| Wasin Waeosri | Release 4.1.0 | Added JavaFX information when run jar file |
| | | Added JavaFX dependencies to pom.xml |
| | | Added information about Q&A forum and product non-SLA |
| Nick Zincone | Release 4.1.0 | Ability to specify region |
| | | Default service based on Directory interrogation |
| Nick Zincone | Release 4.0.0 | Added access to Real-Time -- Optimized v2 authentication. Rebranded (LSEG) |
Expand All @@ -211,11 +242,6 @@ Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c6
| | | Utilized JavaFX Scene Builder to generate FXML |
| Susana Chang | Release 1.1 | Initial implementation |






## License

This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details
Binary file added images/run_speedguide.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 13 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<javafx.version>17.0.18</javafx.version>
</properties>

<dependencies>
Expand All @@ -30,7 +31,18 @@
<groupId>com.refinitiv.eta</groupId>
<artifactId>eta</artifactId>
<version>3.7.2.0</version>
</dependency>
</dependency>

<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
</dependencies>

<build>
Expand Down