Difference between revisions of "Legacy ISO Metadata Publishing"

From Gcube Wiki
Jump to: navigation, search
(Code Adaptation)
(Metadata generation)
Line 42: Line 42:
 
Instances of ''org.opengis.metadata.Metadata'' interface can be arbitrarily generated  by the invoking application. However, the library has been provided with facilities to easily generate Metadata instances for most gCube applications needs.
 
Instances of ''org.opengis.metadata.Metadata'' interface can be arbitrarily generated  by the invoking application. However, the library has been provided with facilities to easily generate Metadata instances for most gCube applications needs.
  
=Metadata generation=
+
=Metadata generation facilities=
 +
Instances of ''org.opengis.metadata.Metadata'' interface can be generated in very different ways. However, we identified a common set of information which every application should include in its published metadata. Providing a common way to generate these metadata entry aims to :
 +
 
 +
* Reduce the needed effort to generate metadata from the developer's point of view;
 +
* Reuse of code;
 +
* Common behavior to gather common information (see [[#Infrastructure configuration]]).
 +
 
 +
==GcubeISOMetadata class==
 +
 
 +
The utility class ''org.gcube.common.geoserverinterface.bean.iso.GcubeISOMetadata'' lets developers to simply specify the metadata information strictly needed for the generation, relying on internal logic for generic behavior.
 +
 
 +
 
 +
===Instantiating===
 +
A GcubeISOMetadata instance should be generated for each publishing request, but this behavior depends on the caller application logic.
 +
At construction time, common information fetched from the gCube IS is loaded. Queries to IS are done via the [[ic-client]], so be sure that a proper scope is setted via ''org.gcube.common.scope.api.ScopeProvider''.
 +
 
 +
<source lang="java">
 +
 
 +
import org.gcube.common.geoserverinterface.bean.iso.EnvironmentConfiguration;
 +
import org.gcube.common.geoserverinterface.bean.iso.GcubeISOMetadata;
 +
import org.gcube.common.scope.api.ScopeProvider;
 +
....
 +
ScopeProvider.instance.set(...);
 +
GcubeISOMetadata meta=new GcubeISOMetadata();
 +
EnvironmentConfiguration configuration = meta.getConfig();
 +
System.out.println("Current configuration is "+configuration);
 +
</source>
 +
 
 
=Extending default behaviour=
 
=Extending default behaviour=

Revision as of 18:51, 16 July 2013

This page aims to explain how to publish ISO metadata using legacy GIS library org.gcube.common.geoserverinterface (referred as GeoServerInterface from now on).

Since various components still rely on GeoServerInterface to publish geo-referenced data, the library has been enhanced to facilitate publication of ISO Metadata correctly filled (see GCube Object Metadata).

This guide require the reader to already know the functionality of GeoServerInterface library.

Maven Dependency

The GeoServerInterface library is released as a maven artifact with the following coordinates

<groupId>org.gcube.common</groupId>
<artifactId>geoserverinterface</artifactId>

Please note that ISO Metadata facilities are released from version 1.10.2.

ISO 19115:2003 metadata compliance

Metadata objects used by the libraries implement GeoAPI interfaces, which are fully compliant to ISO 19115:2003/19139. Current implementation is based on GeoToolkit Metadata module.

Code Adaptation

Introduced enhancements have been designed in order to make code adaptation as easy as possible from developers view. The class org.gcube.common.geoserverinterface.GeoCaller remains the main entry point of GeoServerInterface library for publishing means.

Preexistent publishing methods have been doubled in a way that users just need to change the passed arguments in order to change ISO Metadata publishing behavior.

The following is the list of newly introduced methods

public boolean addGeoLayer(String fileUrl, String layerName, String layerTitle, String workspace, GeonetworkCategory category, Metadata toPublishMeta, String scope, String defaultStyle) throws Exception;
public boolean addFeatureType(FeatureTypeRest featureTypeRest,String defaultStyle, GeonetworkCategory category, Metadata toPublishMeta) throws Exception;
public boolean addGeoTiff(String geoTiffUrl, final String layerName, String layerTitle, final String workspace, GeonetworkCategory category, Metadata toPublishMeta, String scope, String defaultStyle) throws Exception;
public boolean addPreExistentGeoTiff(String fileName, final String layerName, String layerTitle, final String workspace, GeonetworkCategory category, Metadata toPublishMeta,String defaultStyle) throws Exception;

To summerize difference in methods signature :

  • removed argument String description
  • removed argument String abstract
  • added argument org.opengis.metadata.Metadata toPublishMeta : ISO Metadata object representation. It must be already filled with all needed information but layer OGC links, which will be generated at publishing time by the library.
  • added arguemnt String defaultStyle : the defaultStyle to be used when generating OGC links in ISO metadata

Instances of org.opengis.metadata.Metadata interface can be arbitrarily generated by the invoking application. However, the library has been provided with facilities to easily generate Metadata instances for most gCube applications needs.

Metadata generation facilities

Instances of org.opengis.metadata.Metadata interface can be generated in very different ways. However, we identified a common set of information which every application should include in its published metadata. Providing a common way to generate these metadata entry aims to :

  • Reduce the needed effort to generate metadata from the developer's point of view;
  • Reuse of code;
  • Common behavior to gather common information (see #Infrastructure configuration).

GcubeISOMetadata class

The utility class org.gcube.common.geoserverinterface.bean.iso.GcubeISOMetadata lets developers to simply specify the metadata information strictly needed for the generation, relying on internal logic for generic behavior.


Instantiating

A GcubeISOMetadata instance should be generated for each publishing request, but this behavior depends on the caller application logic. At construction time, common information fetched from the gCube IS is loaded. Queries to IS are done via the ic-client, so be sure that a proper scope is setted via org.gcube.common.scope.api.ScopeProvider.

import org.gcube.common.geoserverinterface.bean.iso.EnvironmentConfiguration;
import org.gcube.common.geoserverinterface.bean.iso.GcubeISOMetadata;
import org.gcube.common.scope.api.ScopeProvider;
....
ScopeProvider.instance.set(...);
GcubeISOMetadata meta=new GcubeISOMetadata();
EnvironmentConfiguration configuration = meta.getConfig();
System.out.println("Current configuration is "+configuration);

Extending default behaviour