Species Product Discovery: client library
This client library allows user to contact the Species Product Discovery Service.
The spd-client-library is a client library for the Species Product Discovery Service. It helps clients interacting with the service and processing result. This library is part of the FeatherWeight Stack.
Contents
Download
The maven coordinates to get the spd-client-library is:
<dependency> <groupId>org.gcube.data.spd</groupId> <artifactId>spd-client-library</artifactId> <version>${version}</version> </dependency>
the latest released version is : 3.0.0-2.15
the latest under development version is : 3.1.0-SNAPSHOT
Architecture
The spd-cl is divided into 4 parts:
- QueryManager: helps clients submitting queries to the service;
- OccurrencesManager: helps clients retrieving occurrences and generating maps using retrieved occurrences;
- ClassificationManager: help clients retrieving taxa and their ancestor by ids.
- ExecutorManager: helps clients submitting jobs to the system.
QueryManager API
-
public Stream<ResultElement> search(String query) throws InvalidQueryException, UnsupportedPluginException;
This method is used to submit a query to the system. The query MUST be written following the SPQL grammar.
-
public List<PluginDescription> getPluginsDescription();
This method is used to get the list of all external repositories available in the infrastructure and their capabilities.
Example
It's required to add following import : import static org.gcube.data.spd.client.plugins.AbstractPlugin.*;
ScopeProvider.instance.set(...); Manager manager = manager().withTimeout(3, TimeUnit.MINUTES).build(); //returns all taxa points for Melastomataceae found in CatalogueOfLife Stream<ResultElement> stream = manager.search(//SPQL query for taxa//); while (stream.hasNext()){ TaxonomyItem ti = (TaxonomyItem) stream.next(); ... }
ScopeProvider.instance.set(...); Manager manager = manager().withTimeout(3, TimeUnit.MINUTES).build(); //returns all occurrence points for Melastomataceae found in all external repositories Stream<ResultElement> stream = manager.search(//SPQL query for occurrences//); while (stream.hasNext()){ OccurrencePoint ti = (OccurrencePoint) stream.next(); ... }
ScopeProvider.instance.set(...); Manager manager = manager().withTimeout(3, TimeUnit.MINUTES).build(); //returns all results (grouped by DataSet) for common name Shark with at least 1 occurrence found in Obis or GBIF Stream<ResultElement> stream = manager.search(//SPQL query for ResultItem//); while (stream.hasNext()){ ResultItem ti = (ResultItem) stream.next(); ... }
ScopeProvider.instance.set(...); Manager manager = manager().build(); List<PluginDescription> pluginDescriptions = manager.getPluginsDescription(); for (PluginDescription description : pluginDescriptions){ System.out.println(description.getName()); ... }
OccurrenceManager API
-
public Stream<OccurrencePoint> getByIds(Stream<String> ids);
This method is used to get occurrence points object giving a stream of ids (every id represent only one occurrence point)
-
public String createLayer(Stream<PointInfo> coordinatesLocator);
This method is used to create a layer and publish it in GeoServer giniving a stream of Points
-
public Stream<OccurrencePoint> getByKeys(Stream<String> keys);
This method is used to get a stream of occurrence points object giving a stream of keys (a key represent a group of occurrence point)
ClassificationManager API
-
public Stream<TaxonomyItem> getTaxonChildrenById(final String id) throws UnsupportedPluginException,UnsupportedCapabilityException, InvalidIdentifierException;
-
public Stream<TaxonomyItem> getTaxaByIds(final Stream<String> ids);
-
public Stream<TaxonomyItem> getTaxonTreeById(final String id) throws UnsupportedPluginException,UnsupportedCapabilityException, InvalidIdentifierException;
-
public Stream<TaxonomyItem> getSynonymsById(String id) throws UnsupportedPluginException,UnsupportedCapabilityException, InvalidIdentifierException;
ExecutorManager API
-
public String createDwCAByChildren(String taxonKey) throws Exception;
-
public String getResultLink(String jobId) throws InvalidIdentifierException;
-
public Status getStatus(String jobId) throws InvalidIdentifierException;
-
public void removeJob(String jobId) throws InvalidIdentifierException;
-
public String createDwCAByIds(final Stream<String> ids) throws Exception;
-
public String createCSV(final Stream<String> ids) throws Exception;
-
public String createCSVforOM(final Stream<String> ids) throws Exception;
-
public String createDarwincoreFromOccurrenceKeys(final Stream<String> ids) throws Exception;