From b89dc09428fbbab797a1794c21cfa2bfcc2c0097 Mon Sep 17 00:00:00 2001 From: "fabio.sinibaldi" Date: Fri, 27 Oct 2017 10:36:30 +0000 Subject: [PATCH] git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-transfer/sis-geotk-plugin@157651 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 85 +++++++++++++++++-- src/assemble/uber-jar-assembly.xml | 20 +++++ .../plugins/sis/SISPluginFactory.java | 30 ++++++- .../data/transfer/plugins/sis/SisPlugin.java | 23 +++-- .../transfer/plugins/sis/TestGetCatalog.java | 11 +++ .../transfer/plugins/sis/TestGetMetadata.java | 74 +++++++++++++++- 6 files changed, 224 insertions(+), 19 deletions(-) create mode 100644 src/assemble/uber-jar-assembly.xml create mode 100644 src/test/java/org/gcube/data/transfer/plugins/sis/TestGetCatalog.java diff --git a/pom.xml b/pom.xml index 196de49..42a8fba 100644 --- a/pom.xml +++ b/pom.xml @@ -30,8 +30,8 @@ - org.gcube.distribution - maven-smartgears-bom + org.gcube.data.transfer + data-transfer-bom LATEST pom import @@ -43,7 +43,13 @@ org.gcube.data.transfer data-transfer-plugin-framework - [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + + + + org.slf4j + slf4j-api + 1.7.5 + provided @@ -57,13 +63,14 @@ sdi-library [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) - + org.gcube.core common-smartgears + provided - + org.apache.sis.core @@ -87,16 +94,80 @@ org.slf4j slf4j-log4j12 1.6.4 - test + provided junit junit - 4.11 test + + + + + + + + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.6 + + + make-uberjar + package + + single + + + src/assemble/uber-jar-assembly.xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assemble/uber-jar-assembly.xml b/src/assemble/uber-jar-assembly.xml new file mode 100644 index 0000000..3e33613 --- /dev/null +++ b/src/assemble/uber-jar-assembly.xml @@ -0,0 +1,20 @@ + + uberjar + + jar + + false + + + false + runtime + false + + + + + ${project.build.outputDirectory} + . + + + \ No newline at end of file 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 3653b0c..b5111cf 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 @@ -10,6 +10,7 @@ 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 org.gcube.data.transfer.plugin.model.DataTransferContext; +import org.gcube.smartgears.configuration.application.ApplicationConfiguration; import lombok.extern.slf4j.Slf4j; @@ -33,10 +34,16 @@ public class SISPluginFactory extends AbstractPluginFactory { } + + + //INSTANCE public SISPluginFactory() { - + } - + + String publicCatalogLocation=null; + + @Override public PluginInvocation checkInvocation(PluginInvocation arg0,String transferredFile) throws ParameterException { log.debug("Setting default parameters for {} ",arg0); @@ -67,7 +74,7 @@ public class SISPluginFactory extends AbstractPluginFactory { @Override public SisPlugin createWorker(PluginInvocation arg0) { - return new SisPlugin(arg0,ctx); + return new SisPlugin(arg0,ctx,publicCatalogLocation); } @Override @@ -89,6 +96,23 @@ public class SISPluginFactory extends AbstractPluginFactory { public boolean init(DataTransferContext ctx) throws PluginInitializationException { log.trace("Loading configuration .. "); this.ctx=ctx; + String threddsContentRoot=null; +// String threddsContentRoot=System.getenv("THREDDS_CONTENT_ROOT")+File.separator+"thredds"; +// log.info("Thredds catalog base path from ENV is {} ",threddsContentRoot); + + for(ApplicationConfiguration app:ctx.getCtx().container().configuration().apps()) { + log.debug("Found app {} ",app.context()); + if(app.context().equals("thredds")||app.context().equals("/thredds")) { + threddsContentRoot=app.persistence().location(); + log.info("Thredds catalog base path from Context is {} ",threddsContentRoot); + + // Found thredds + // Get catalog base folder +// app.persistence(). + } + } + if(threddsContentRoot==null) throw new PluginInitializationException("No Thredds instance found in context"); + publicCatalogLocation=threddsContentRoot+"/public/netcdf/"; return true; } 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 0d18b58..b4e41fc 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 @@ -29,10 +29,11 @@ public class SisPlugin extends AbstractPlugin { File tmp=null; DataTransferContext ctx; - - public SisPlugin(PluginInvocation invocation, DataTransferContext ctx) { + String publicCatalogLocation; + public SisPlugin(PluginInvocation invocation, DataTransferContext ctx, String publicCatalogLocation) { super(invocation); this.ctx=ctx; + this.publicCatalogLocation=publicCatalogLocation; } @Override @@ -72,6 +73,7 @@ public class SisPlugin extends AbstractPlugin { MetadataPublishOptions options=new MetadataPublishOptions(invocations); options.setGeonetworkCategory(category); options.setGeonetworkStyleSheet(stylesheet); + options.setValidate(false); MetadataReport report=metadataInterface.pushMetadata(tmp, options); @@ -119,12 +121,21 @@ public class SisPlugin extends AbstractPlugin { } private String getCatalogFromPath(String path){ - String catalog=path.substring(0, path.lastIndexOf("/")-1); - catalog=catalog.substring(catalog.lastIndexOf("/")+1); - return catalog; + return getCatalogFromPath(path, publicCatalogLocation); } - + public static String getCatalogFromPath(String path, String publicCatalogLocation) { + log.debug("Getting catalog from path {} ",path); + String catalog=path.substring(publicCatalogLocation.length()); + if(catalog.contains("/")) { + catalog=catalog.substring(0, catalog.lastIndexOf("/")); + log.debug("Subcatalog found {} ",catalog); + }else { + log.debug("No catalog found"); + catalog=null; + } + return catalog; + } // // public long publishMetadata(File toPublish,String category, String stylesheet, GeoNetworkPublisher publisher) throws Exception{ diff --git a/src/test/java/org/gcube/data/transfer/plugins/sis/TestGetCatalog.java b/src/test/java/org/gcube/data/transfer/plugins/sis/TestGetCatalog.java new file mode 100644 index 0000000..cba3a3c --- /dev/null +++ b/src/test/java/org/gcube/data/transfer/plugins/sis/TestGetCatalog.java @@ -0,0 +1,11 @@ +package org.gcube.data.transfer.plugins.sis; + +public class TestGetCatalog { + + public static void main(String[] args) { + String path="/home/gcube/tomcat/content/thredds/public/netcdf/myCatalog/CERSAT-GLO-CLIM_WIND_L4-OBS_FULL_TIME_SERIE_CLIMATOLOGY_METEOROLOGY_ATMOSPHERE_1366217956317.nc"; + String publicLocation="/home/gcube/tomcat/content/thredds/public/netcdf/"; + System.out.println(SisPlugin.getCatalogFromPath(path, publicLocation)); + } + +} diff --git a/src/test/java/org/gcube/data/transfer/plugins/sis/TestGetMetadata.java b/src/test/java/org/gcube/data/transfer/plugins/sis/TestGetMetadata.java index 6064902..6b7304d 100644 --- a/src/test/java/org/gcube/data/transfer/plugins/sis/TestGetMetadata.java +++ b/src/test/java/org/gcube/data/transfer/plugins/sis/TestGetMetadata.java @@ -1,16 +1,84 @@ package org.gcube.data.transfer.plugins.sis; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.net.MalformedURLException; -import java.net.URL; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import org.apache.sis.storage.DataStoreException; import org.apache.sis.storage.UnsupportedStorageException; +import org.gcube.data.transfer.model.TransferTicket.Status; public class TestGetMetadata { - public static void main(String[] args) throws UnsupportedStorageException, MalformedURLException, DataStoreException { - System.out.println(SisPlugin.getMetaFromFile(new URL("https://github.com/opengeospatial/geoapi/raw/master/geoapi-netcdf/src/test/resources/org/opengis/wrapper/netcdf/NCEP-SST.nc"))); + public static void main(String[] args) throws UnsupportedStorageException, DataStoreException, IOException, NoSuchAlgorithmException { + + File temp=File.createTempFile("temp", ".temp"); + File original=new File("/home/fabio/Downloads/oscar_vel2011_180.nc"); + File copied=File.createTempFile("copied", ".nc"); + transferStream(new FileInputStream(original),new FileOutputStream(temp)); + System.out.println("copied. Moving.."); + + System.out.println("Checksum original : "+getChecksum(original)); + System.out.println("Checksum temp : "+getChecksum(temp)); + + + + Files.move(temp.toPath(), copied.toPath(),StandardCopyOption.ATOMIC_MOVE,StandardCopyOption.REPLACE_EXISTING); + if(copied.length()