Species Product Discovery: client library

From Gcube Wiki
Jump to: navigation, search

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.

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;