Germinate Mobile
Mobile devices are ubiquitous and get cheaper and more powerful every day. This opens up new opportunities to broaden the range of software products and introduce mobile applications that can aid in collecting and reviewing data on the go.
As an example: Imagine you are a researcher out in the fields and are wondering which specific variety of a plant you are looking at. If you are no expert, you would usually either have to ask one, consult a textbook or check Germinate online. Wouldn’t it be handy to have access to Germinate on your phone or tablet via mobile data without clicking through the web interface? This is where Germinate Mobile comes in.
Germinate Mobile is an Android application that acts as a mobile interface for the Germinate system. The goal of this app is to enable researchers to access detailed information about plants on their smartphone or tablet while they are out and about in the fields. Images as well as passport and pedigree information are accessible by just entering the name of the variety you are looking at. If you are not sure which variety you actually are looking at, you can use Germinate Mobile to narrow it down by searching for phenotypic criteria or by looking at plant schematics. Recorded audio notes and taken pictures are automatically tagged with the name of the currently selected variety and your geographic location.
A summary of the currently available information can be found below:
- Detailed passport information about all varieties
- Interactive search functionality to identify varieties based on characteristics
- Images of the varieties
- Pedigree information
- Functionality to take pictures and audio comments (both stored on the device with meta information about location and variety)
- Plant schematics to support identification of plant characteristics
Germinate Mobile supports all popular screen sizes as well as both landscape and portrait orientation. The app comes in two color themes: A light theme to allow good readability outside even in bright sunlight and a dark theme for environments with less light.
Germinate Mobile does not hold the plant data locally, which makes it lightweight. Instead, only the necessary information is requested from our servers. The device currently communicates with our servers via the SOAP library ksoap2-android. The accessed web service processes the request and queries the database for the actual data. This data is returned to the mobile device in either XML or JSON format.
Since the start of the Germinate 3 development phase, we have been looking at ways of using the same server side code for both the web interface and the mobile interface of Germinate. Recently we found a library called gwt-syncproxy that allows reusing the GWT server code using remote procedure calls (RPC).
Figure 1 shows the ideal case where both the Android and the web client use the same means of communication with the server. The server will then check the user information against the Gatekeeper and, if the authentication was successful, request the data from the database and send it to the client.
The authentication procedure of Germinate 3 is shown in detail in Figure 2. So far we were able to extend gwt-syncproxy to use cookies and session ids. To secure the server against cross-site request forgery (CSRF), we included a three-way session id authentication process. The session id is generated on the server when the user tries to log in for the first time using valid credentials. This session id is stored in the current HTTP session and is sent to the client. The client then creates a cookie using this session id. Finally, each request sent to the server contains the session id as payload in a parameter. Consequently, the server receives three session ids and checks if they match. If one of them is missing or they don’t match up, the server will assume that the request is not genuine and will urge the client to log the user out.
This communication between Germinate Mobile and Germinate 3 is already completely functional. However, there still is some coding to be done to migrate Germinate Mobile to the GWT back end.