diff --git a/pom.xml b/pom.xml
index 849d64f..ed6121d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
org.gcube.data.transfer
sis-geotk-plugin
- 0.0.1-SNAPSHOT
+ 1.0.0-SNAPSHOT
Sis/GeoToolkit plugin
Apache Sis/Geotk plugin for data-transfer-service
diff --git a/src/main/java/org/gcube/data/transfer/plugins/sis/SISPluginFactory.java b/src/main/java/org/gcube/data/transfer/plugins/sis/SISPluginFactory.java
index 5cbb808..1638c64 100644
--- a/src/main/java/org/gcube/data/transfer/plugins/sis/SISPluginFactory.java
+++ b/src/main/java/org/gcube/data/transfer/plugins/sis/SISPluginFactory.java
@@ -1,5 +1,7 @@
package org.gcube.data.transfer.plugins.sis;
+import java.io.File;
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -9,31 +11,47 @@ import org.gcube.data.transfer.plugin.fails.ParameterException;
import org.gcube.data.transfer.plugin.fails.PluginInitializationException;
import org.gcube.data.transfer.plugin.fails.PluginShutDownException;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
public class SISPluginFactory extends AbstractPluginFactory {
static final String PLUGIN_ID="SIS/GEOTK";
-
+
public static final String SOURCE_PARAMETER="SOURCE_FILE";
public static final String GEONETWORK_CATEGORY="GEONETWORK_CATEGORY";
public static final String GEONETWORK_STYLESHEET="GEONETWORK_STYLESHEET";
-
+
static final Map PARAMETERS_DESCRIPTION= new HashMap();
-
+
static{
PARAMETERS_DESCRIPTION.put(SOURCE_PARAMETER, "[String value] Absolute path of source archive file.");
PARAMETERS_DESCRIPTION.put(GEONETWORK_CATEGORY, "[String value] GeoNetwork category for publiehd metadata. Default is 'Dataset'.");
PARAMETERS_DESCRIPTION.put(GEONETWORK_STYLESHEET, "[String value] GeoNetwork stylesheet for publiehd metadata. Default is '_none_'.");
}
-
-
+
+
public SISPluginFactory() {
-
+
}
@Override
public void checkInvocation(PluginInvocation arg0) throws ParameterException {
- // TODO Auto-generated method stub
-
+ log.debug("Checking parameters for {} ",arg0);
+ Map params=arg0.getParameters();
+ if(params==null||params.isEmpty()||(!params.containsKey(SOURCE_PARAMETER)))
+ throw new ParameterException(SOURCE_PARAMETER+" is mandatory");
+ String source=params.get(SOURCE_PARAMETER);
+ if(source==null||source.length()==0) throw new ParameterException(SOURCE_PARAMETER+" cannot be null.");
+ try{
+ File f=new File(source);
+ if(!f.exists()) throw new ParameterException(SOURCE_PARAMETER+" ["+source+"] not found.");
+ if(!f.canRead()) throw new ParameterException("Cannot read "+SOURCE_PARAMETER+" ["+source+"].");
+ }catch(ParameterException e){
+ throw e;
+ }catch(Exception e){
+ throw new ParameterException("Unable to access source file ",e);
+ }
}
@Override
diff --git a/src/main/java/org/gcube/data/transfer/plugins/sis/SisPlugin.java b/src/main/java/org/gcube/data/transfer/plugins/sis/SisPlugin.java
index 0445fa7..e8a83b1 100644
--- a/src/main/java/org/gcube/data/transfer/plugins/sis/SisPlugin.java
+++ b/src/main/java/org/gcube/data/transfer/plugins/sis/SisPlugin.java
@@ -6,10 +6,11 @@ import java.util.Map;
import org.apache.sis.storage.DataStoreException;
import org.apache.sis.storage.DataStores;
import org.apache.sis.storage.UnsupportedStorageException;
+import org.apache.sis.xml.XML;
+import org.gcube.data.transfer.model.ExecutionReport;
+import org.gcube.data.transfer.model.ExecutionReport.ExecutionReportFlag;
import org.gcube.data.transfer.model.PluginInvocation;
import org.gcube.data.transfer.plugin.AbstractPlugin;
-import org.gcube.data.transfer.plugin.ExecutionReport;
-import org.gcube.data.transfer.plugin.ExecutionReport.ExecutionReportFlag;
import org.gcube.data.transfer.plugin.fails.PluginCleanupException;
import org.gcube.data.transfer.plugin.fails.PluginExecutionException;
import org.gcube.spatial.data.geonetwork.GeoNetwork;
@@ -35,7 +36,7 @@ public class SisPlugin extends AbstractPlugin {
@Override
public ExecutionReport run() throws PluginExecutionException {
try{
- log.debug("Checking parameters for {} ",invocation);
+
Map params=invocation.getParameters();
String dataStorePath=params.get(SISPluginFactory.SOURCE_PARAMETER);
String category=params.containsKey(SISPluginFactory.GEONETWORK_CATEGORY)?params.get(SISPluginFactory.GEONETWORK_CATEGORY):"Dataset";
@@ -64,10 +65,16 @@ public class SisPlugin extends AbstractPlugin {
public static final long publishMetadata(Metadata meta,String category, String stylesheet) throws Exception{
+ File tmp=File.createTempFile("tmp_meta_", ".xml");
+
+ XML.marshal(meta,tmp);
+
GeoNetworkPublisher publisher=GeoNetwork.get();
publisher.login(LoginLevel.DEFAULT);
GNInsertConfiguration config=publisher.getCurrentUserConfiguration(category, stylesheet);
config.setValidate(false);
- return publisher.insertMetadata(config, meta);
+ long toReturn= publisher.insertMetadata(config, tmp);
+ tmp.delete();
+ return toReturn;
}
}