Create a Data Access Object for Strava Data using JDBI
JDBI is a SQL convenience library for Java that exposes two different style APIs, a fluent style and a SQL object style. The CData JDBC Driver for Strava integrates connectivity to live Strava data in Java applications. By pairing these technologies, you gain simple, programmatic access to Strava data. This article explains how to build a basic Data Access Object (DAO) and the accompanying code to read Strava data.
Create a DAO for the Strava Athlete Entity
The interface below declares the desired behavior for the SQL object to create a single method for each SQL statement to be implemented.
public interface MyAthleteDAO {
//request specific data from Strava (String type is used for simplicity)
@SqlQuery("SELECT FROM Athlete WHERE = :")
String findBy(@Bind("") String );
/*
* close with no args is used to close the connection
*/
void close();
}
Open a Connection to Strava
Collect the necessary connection properties and construct the appropriate JDBC URL for connecting to Strava.
To authenticate to Strava, and connect to your own data or to allow other users to connect to their data, you can use the OAuth standard.
Using OAuth Authentication
You must create a custom OAuth application to connect to Strava. To create a custom OAuth application:
- Log into the Strava API Settings page
- Create a new application or select an existing application
- Set the "Authorization Callback Domain" to your callback URL domain (e.g. localhost)
- Note down the Client ID and Client Secret
After setting the following connection properties, you are ready to connect:
- AuthScheme: Set this to OAuth.
- InitiateOAuth: Set this to GETANDREFRESH. You can use InitiateOAuth to manage the process to obtain the OAuthAccessToken.
- OAuthClientId: Set this to the Client ID from your Strava API application.
- OAuthClientSecret: Set this to the Client Secret from your Strava API application.
- CallbackURL: Set this to the redirect URI matching your application's callback domain.
Example connection string:
Profile=C:\profiles\Strava.apip;AuthScheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackURL=http://localhost:33333;
Built-in Connection String Designer
For assistance in constructing the JDBC URL, use the connection string designer built into the Strava JDBC Driver. Either double-click the JAR file or execute the jar file from the command-line.
java -jar cdata.jdbc.api.jar
Fill in the connection properties and copy the connection string to the clipboard.
A connection string for Strava will typically look like the following:
jdbc:api:Profile=C:\profiles\Strava.apip;AuthScheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackURL=http://localhost:33333;
Use the configured JDBC URL to obtain an instance of the DAO interface. The particular method shown below will open a handle bound to the instance, so the instance needs to be closed explicitly to release the handle and the bound JDBC connection.
DBI dbi = new DBI("jdbc:api:Profile=C:\profiles\Strava.apip;AuthScheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackURL=http://localhost:33333;");
MyAthleteDAO dao = dbi.open(MyAthleteDAO.class);
//do stuff with the DAO
dao.close();
Read Strava Data
With the connection open to Strava, simply call the previously defined method to retrieve data from the Athlete entity in Strava.
//disply the result of our 'find' method
String = dao.findBy("");
System.out.println();
Since the JDBI library is able to work with JDBC connections, you can easily produce a SQL Object API for Strava by integrating with the CData JDBC Driver for Strava. Download a free trial and work with live Strava data in custom Java applications today.