Difference between revisions of "GCube-SDI-Suite"

From Gcube Wiki
Jump to: navigation, search
(Using java clients)
(Legacy Components)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:gCube Features]]
+
[[Category:gCube Features]][[Category: gCube Spatial Data Infrastructure]][[Category: SDI components]]
 
'''gCube-SDI-Suite''' is a set of gCube java components that allows for the management of GIS resources (i.e. GeoSpatial DataSets, Metadata, Services..) in D4Science Spatial Data e-Infrastructure.
 
'''gCube-SDI-Suite''' is a set of gCube java components that allows for the management of GIS resources (i.e. GeoSpatial DataSets, Metadata, Services..) in D4Science Spatial Data e-Infrastructure.
 
It provides Java implementations of both client-side and service-side features, and it is built on top of OGC standards implementations.
 
It provides Java implementations of both client-side and service-side features, and it is built on top of OGC standards implementations.
Line 25: Line 25:
 
*  Isolating complexity of GIS resources management and infrastructure integration
 
*  Isolating complexity of GIS resources management and infrastructure integration
 
*  Allowing for easy extension of behaviour
 
*  Allowing for easy extension of behaviour
 +
 +
'''NB''' The suite has been recently developped and not yet integrated. Check [#Legacy Components] section to look for previous implementations.
 +
  
 
===Components===
 
===Components===
Line 40: Line 43:
 
* '''gCube-GeoNetwork-Client''' [[SDI_Library#Dynamic Clients | Dynamic Clients]] towards '''GeoNetwork REST API''';
 
* '''gCube-GeoNetwork-Client''' [[SDI_Library#Dynamic Clients | Dynamic Clients]] towards '''GeoNetwork REST API''';
 
* '''gcube-GeoServer-Connector''' internal library used to authenticate gCube calls towards Geoserver;
 
* '''gcube-GeoServer-Connector''' internal library used to authenticate gCube calls towards Geoserver;
 +
 +
====Legacy Components====
 +
The suite aims to provide a common layer for the interaction with gCube SDI, presenting a generic behaviour where possible.
 +
Previous attempts to implement a wrapping layer over SDI has been done with the following components :
 +
 +
* '''GIS-Interface''' : common publishing behaviour, dealing with both data and metadata. Built on top of GeoNetwork library. See [[GIS_Interface | wiki]] and [https://code-repo.d4science.org/gCubeSystem/gis-interface code].
 +
* '''GeoNetwork''' : library for the interaction with GeoNetwork service, dealing with both credentials management and metadata publication. See [[GeoNetwork_library | wiki]] and [https://code-repo.d4science.org/gCubeSystem/geonetwork code]
  
 
==Use cases==
 
==Use cases==
Line 46: Line 56:
 
The best way to interact with the SDI is by using a provided java client described from [[SDI_Library]].
 
The best way to interact with the SDI is by using a provided java client described from [[SDI_Library]].
  
Following clients can be selectively used to support GIS resources management :
+
Following clients can be selectively used to support publication and access :
  
* [[SDI_Library#Metadata Interface| Metadata]]: allows for common '''ISO Metadata publication''' use cases in the gCube SDI;
+
* [[SDI_Library#Metadata Interface| Metadata ]] client: allows for common '''ISO Metadata publication''' use cases in the gCube SDI;
* [[SDI_Library#gcube GeoNetwork Cilent| gCube GeoNetwork]]: offers a java client towards '''GeoNetwork REST API''', fully integrated with gCube Infrastructure;
+
* [[SDI_Library#gcube GeoNetwork Cilent| gCube GeoNetwork]] client: offers a java client towards '''GeoNetwork REST API''', fully integrated with gCube Infrastructure;
* [[SDI_Library#Datasets Interface| Datasets]]: allows for common '''GIS Dataset publication''' use cases in the gCube SDI;
+
* [[SDI_Library#Datasets Interface| Datasets]] client: allows for common '''GIS Dataset publication''' use cases in the gCube SDI;
* [[SDI_Library#gcube GeoNetwork Cilent| gCube GeoNetwork]]: offers a java client towards '''GeoServer REST API''', fully integrated with gCube Infrastructure;
+
* [[SDI_Library#gcube GeoServer Cilent| gCube GeoServer]] client : offers a java client towards '''GeoServer REST API''', fully integrated with gCube Infrastructure;
 +
 
 +
Furthermore, the [[SDI_Library#SDI Management| gCube GeoNetwork]] can be used to :
 +
 
 +
* Manage SDI subsystems in the VRE (i.e. GeoNetwork, GeoServer, Thredds..)
 +
* Manage metadata templates
 +
* Manage Application profiles
 +
* Manage Credentials and configurations
  
 
===Managing configurations===
 
===Managing configurations===
===REST Interfaces===
+
Configuration are managed as resources in the SDI. The best way to achieve context configuration is to interact with [[SDI-Service]] either by exploiting its '''REST''' interface or the provided [[SDI_Library#SDI Management| java client]].
 +
 
 +
===HTTP Interfaces===
 +
The SDI is composed by various instances of web servers, exposing various HTTP APIs.
 +
 
 +
* [[SDI-Service]] exposes a REST api documented [[Interaction_with_SDI-Service#REST_Interface| here]];
 +
* Subsystems (i.e. GeoNetwork, GeoServer, Thredds..) exposed interfaces may vary by implementation and versions. Instances endpoints and connection parameters should be retrieved by exploiting SDI-Service's [[Interaction_with_SDI-Service#REST_Interface| REST interface]]. Moreover, their interface is usually managed by '''gCube Features''' offering gCube authentication support.

Latest revision as of 15:30, 2 February 2023

gCube-SDI-Suite is a set of gCube java components that allows for the management of GIS resources (i.e. GeoSpatial DataSets, Metadata, Services..) in D4Science Spatial Data e-Infrastructure. It provides Java implementations of both client-side and service-side features, and it is built on top of OGC standards implementations. It is powered by gCube Features, fully integrating with the infrastructure.

Design

gCube-SDI-Suite is designed as a modular set of components, each of which can be used as dependency by another application. It fully relies on gCube for infrastructure integration.

The suite code can be found at [[1]], and it is distributed as the following maven artifact in gCube repositories :

<dependency>
  <groupId>org.gcube.spatial.data</groupId>
  <artifactId>gcube-sdi-suite</artifactId>
  <type>pom</type>
</dependency>

Philosophy

gCube-SDI-Suite aim is to to simplify developpers' life in managing GIS resources by

  • Offering easy ways to perform common tasks
  • Encouraging reuse of code by modularization of feature and reduction of dependency tree
  • Isolating complexity of GIS resources management and infrastructure integration
  • Allowing for easy extension of behaviour

NB The suite has been recently developped and not yet integrated. Check [#Legacy Components] section to look for previous implementations.


Components

gCube-SDI-Suite main components are :

Following components are also part of the suite :

  • SDI-Interface java library with common classes definition;
  • SDI-Test-Commons common library for test purposes;
  • SDI-Generic-Client common library for Dynamic Clients;
  • gCube-GeoServer-Client Dynamic Clients towards GeoServer REST API;
  • gCube-GeoNetwork-Client Dynamic Clients towards GeoNetwork REST API;
  • gcube-GeoServer-Connector internal library used to authenticate gCube calls towards Geoserver;

Legacy Components

The suite aims to provide a common layer for the interaction with gCube SDI, presenting a generic behaviour where possible. Previous attempts to implement a wrapping layer over SDI has been done with the following components :

  • GIS-Interface : common publishing behaviour, dealing with both data and metadata. Built on top of GeoNetwork library. See wiki and code.
  • GeoNetwork : library for the interaction with GeoNetwork service, dealing with both credentials management and metadata publication. See wiki and code

Use cases

Common use cases can be achieved as described in this section.

Using java clients

The best way to interact with the SDI is by using a provided java client described from SDI_Library.

Following clients can be selectively used to support publication and access :

  • Metadata client: allows for common ISO Metadata publication use cases in the gCube SDI;
  • gCube GeoNetwork client: offers a java client towards GeoNetwork REST API, fully integrated with gCube Infrastructure;
  • Datasets client: allows for common GIS Dataset publication use cases in the gCube SDI;
  • gCube GeoServer client : offers a java client towards GeoServer REST API, fully integrated with gCube Infrastructure;

Furthermore, the gCube GeoNetwork can be used to :

  • Manage SDI subsystems in the VRE (i.e. GeoNetwork, GeoServer, Thredds..)
  • Manage metadata templates
  • Manage Application profiles
  • Manage Credentials and configurations

Managing configurations

Configuration are managed as resources in the SDI. The best way to achieve context configuration is to interact with SDI-Service either by exploiting its REST interface or the provided java client.

HTTP Interfaces

The SDI is composed by various instances of web servers, exposing various HTTP APIs.

  • SDI-Service exposes a REST api documented here;
  • Subsystems (i.e. GeoNetwork, GeoServer, Thredds..) exposed interfaces may vary by implementation and versions. Instances endpoints and connection parameters should be retrieved by exploiting SDI-Service's REST interface. Moreover, their interface is usually managed by gCube Features offering gCube authentication support.