Usando Eventos

Desde GeoNetwork 3.0.x, hay multitud de eventos que se pueden estar escuchando desde tu código Java.

Habilitando Listeners para Eventos

To enable this on your Maven project, you have to add the event dependencies. Edit the file custom/pom.xml and add the dependencies tag:

<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>events</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>core</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>

Then create the file custom/src/main/resources/config-spring-geonetwork.xml to tell Spring to load your custom beans adding the following content:

<?xml version=»1.0» encoding=»UTF-8»?> <beans xmlns=»http://www.springframework.org/schema/beans» xmlns:util=»http://www.springframework.org/schema/util» xmlns:context=»http://www.springframework.org/schema/context» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xsi:schemaLocation=» http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd» > <bean class=»org.fao.geonet.events.listeners.MyCustomListener» ></bean> </beans>

This file should contain a list of all the classes that listen to events inside GeoNetwork scope.

Simple Example

We can add a simple example listener like this one, which will print a string every time a metadata gets removed.

package org.fao.geonet.events.listeners;

import org.fao.geonet.domain.*;

import org.fao.geonet.events.md.MetadataRemove;

import org.springframework.context.ApplicationListener;

import org.springframework.stereotype.Component;

@Component public class MyCustomListener implements ApplicationListener<MetadataRemove> {

@Override public void onApplicationEvent(MetadataRemove event) {

System.out.println(«REMOVED»);

}

}

For example, we can call an external REST API that gets triggered every time a Metadata gets removed or updated.

API GeoNetwork

There is also a new API you can use to interact with GeoNetwork from an external script. See more on Guía de la API.