diff --git a/gcube-geonetwork-client/CHANGELOG.md b/gcube-geonetwork-client/CHANGELOG.md index 01bd499..0fe5bbe 100644 --- a/gcube-geonetwork-client/CHANGELOG.md +++ b/gcube-geonetwork-client/CHANGELOG.md @@ -2,5 +2,5 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm # Changelog for org.gcube.spatial.data.gcube-geonetwork-client -## [v0.0.1-SNAPSHOT] - 2021-2-11 +## [v1.0.0-SNAPSHOT] - 2021-2-11 First release diff --git a/gcube-geonetwork-client/pom.xml b/gcube-geonetwork-client/pom.xml index 362eaa7..2b3fc80 100644 --- a/gcube-geonetwork-client/pom.xml +++ b/gcube-geonetwork-client/pom.xml @@ -7,7 +7,7 @@ 1.0.0-SNAPSHOT gcube-geonetwork-client - 0.0.1-SNAPSHOT + 1.0.0-SNAPSHOT gCube GeoNetwork Client diff --git a/gcube-geonetwork-client/src/main/java/org/gcube/spatial/data/clients/geonetwork/GNRESTClientImpl.java b/gcube-geonetwork-client/src/main/java/org/gcube/spatial/data/clients/geonetwork/GNRESTClientImpl.java new file mode 100644 index 0000000..5dce7d2 --- /dev/null +++ b/gcube-geonetwork-client/src/main/java/org/gcube/spatial/data/clients/geonetwork/GNRESTClientImpl.java @@ -0,0 +1,14 @@ +package org.gcube.spatial.data.clients.geonetwork; + +import org.gcube.spatial.data.clients.AbstractGenericRESTClient; +import org.gcube.spatial.data.clients.model.ConnectionDescriptor; + +public class GNRESTClientImpl extends AbstractGenericRESTClient implements GNRESTInterface { + + private static final String API_BASE_PATH="rest"; + + public GNRESTClientImpl(ConnectionDescriptor conn) { + super(conn); + setBasePath(API_BASE_PATH); + } +} diff --git a/gcube-geonetwork-client/src/main/java/org/gcube/spatial/data/clients/geonetwork/GNRESTInterface.java b/gcube-geonetwork-client/src/main/java/org/gcube/spatial/data/clients/geonetwork/GNRESTInterface.java new file mode 100644 index 0000000..a564dbe --- /dev/null +++ b/gcube-geonetwork-client/src/main/java/org/gcube/spatial/data/clients/geonetwork/GNRESTInterface.java @@ -0,0 +1,7 @@ +package org.gcube.spatial.data.clients.geonetwork; + +import org.gcube.spatial.data.clients.GenericLoginClient; + +public interface GNRESTInterface extends GenericLoginClient{ + +} diff --git a/gcube-geonetwork-client/src/main/java/org/gcube/spatial/data/clients/geonetwork/GeoNetworkPlugin.java b/gcube-geonetwork-client/src/main/java/org/gcube/spatial/data/clients/geonetwork/GeoNetworkPlugin.java new file mode 100644 index 0000000..bfd9607 --- /dev/null +++ b/gcube-geonetwork-client/src/main/java/org/gcube/spatial/data/clients/geonetwork/GeoNetworkPlugin.java @@ -0,0 +1,21 @@ +package org.gcube.spatial.data.clients.geonetwork; + +import org.gcube.spatial.data.clients.AbstractGenericClient; +import org.gcube.spatial.data.clients.SDIGenericPlugin; +import org.gcube.spatial.data.clients.model.ClientInfo; +import org.gcube.spatial.data.clients.model.engine.Engine; +import org.gcube.spatial.data.clients.model.engine.Range; + +public class GeoNetworkPlugin extends AbstractGenericClient implements SDIGenericPlugin{ + + public GeoNetworkPlugin() { + super(GNRESTClientImpl.class); + } + + + @Override + public ClientInfo getInfo() { + return new ClientInfo("gn-rest", "GeoNetwork REST", "GeoNetwork REST client", "come class", + new Engine(Engine.GN_ENGINE, "Default GeoNetworkVersion", new Range("2.0.0", null))); + } +} diff --git a/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GeoServerClient.java b/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GeoServerPlugin.java similarity index 80% rename from gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GeoServerClient.java rename to gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GeoServerPlugin.java index ffda3bb..6ccd959 100644 --- a/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GeoServerClient.java +++ b/gcube-geoserver-client/src/main/java/org/gcube/spatial/data/clients/geoserver/GeoServerPlugin.java @@ -6,16 +6,16 @@ import org.gcube.spatial.data.clients.model.ClientInfo; import org.gcube.spatial.data.clients.model.engine.Engine; import org.gcube.spatial.data.clients.model.engine.Range; -public class GeoServerClient extends AbstractGenericClient implements SDIGenericPlugin{ +public class GeoServerPlugin extends AbstractGenericClient implements SDIGenericPlugin{ - public GeoServerClient() { + public GeoServerPlugin() { super(GSRESTClientImpl.class); } @Override public ClientInfo getInfo() { - return new ClientInfo("gs-rest", "GeoServer REST", "GeoServer REST client", "come class", + return new ClientInfo("gs-rest", "GeoServer REST", "GeoServer REST client", GSRESTClientImpl.class.getCanonicalName(), new Engine(Engine.GS_ENGINE, "Default GeoServerVersion", new Range("2.0.0", null))); } diff --git a/gcube-geoserver-client/src/main/resources/META-INF/services/org.gcube.spatial.data.clients.SDIGenericClient b/gcube-geoserver-client/src/main/resources/META-INF/services/org.gcube.spatial.data.clients.SDIGenericClient deleted file mode 100644 index 3b8cb13..0000000 --- a/gcube-geoserver-client/src/main/resources/META-INF/services/org.gcube.spatial.data.clients.SDIGenericClient +++ /dev/null @@ -1 +0,0 @@ -org.gcube.spatial.data.clients.geoserver.GeoServerClient \ No newline at end of file diff --git a/gcube-geoserver-client/src/main/resources/META-INF/services/org.gcube.spatial.data.clients.SDIGenericPlugin b/gcube-geoserver-client/src/main/resources/META-INF/services/org.gcube.spatial.data.clients.SDIGenericPlugin new file mode 100644 index 0000000..870420a --- /dev/null +++ b/gcube-geoserver-client/src/main/resources/META-INF/services/org.gcube.spatial.data.clients.SDIGenericPlugin @@ -0,0 +1 @@ +org.gcube.spatial.data.clients.geoserver.GeoServerPlugin \ No newline at end of file diff --git a/gcube-geoserver-client/src/test/java/org/gcube/spatial/data/clients/geoserver/GSTests.java b/gcube-geoserver-client/src/test/java/org/gcube/spatial/data/clients/geoserver/GSTests.java index d071e74..09402fe 100644 --- a/gcube-geoserver-client/src/test/java/org/gcube/spatial/data/clients/geoserver/GSTests.java +++ b/gcube-geoserver-client/src/test/java/org/gcube/spatial/data/clients/geoserver/GSTests.java @@ -1,8 +1,10 @@ package org.gcube.spatial.data.clients.geoserver; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeTrue; +import java.nio.charset.Charset; import java.util.Collections; import java.util.HashMap; import java.util.UUID; @@ -13,6 +15,7 @@ import org.gcube.sdi.test.GCubeSDITest; import org.gcube.spatial.data.clients.SDIGenericPlugin; import org.gcube.spatial.data.clients.model.engine.Engine; import org.gcube.spatial.data.sdi.model.faults.RemoteException; +import org.gcube.spatial.data.sdi.utils.Files; import org.json.simple.JSONObject; import org.junit.Test; @@ -21,7 +24,7 @@ public class GSTests extends GCubeSDITest{ protected GSRESTClient getClient() throws RemoteException, Exception { SDIGenericPlugin obj=manager().getClientByEngineId(Engine.GS_ENGINE); - assertTrue(obj.getClass().isAssignableFrom(GeoServerClient.class)); + assertTrue(obj.getClass().isAssignableFrom(GeoServerPlugin.class)); return (GSRESTClient) obj.getRESTClient(); } @@ -29,7 +32,8 @@ public class GSTests extends GCubeSDITest{ public void basics() throws RemoteException, Exception { assumeTrue(isTestInfrastructureEnabled()); GSRESTClient client=getClient(); - assertTrue(client.exist()); + assertTrue(client.exist()); + client.authenticate(); } @@ -101,33 +105,29 @@ public class GSTests extends GCubeSDITest{ client.createWorkspace(ws); client.getWorkspace(ws); + // DS +// String myDS=UUID.randomUUID().toString().replace("-", "_"); +// +// HashMap parameters=new HashMap(); +// +//// parameters.put("dbtype","gpkg"); +// parameters.put("url","gpkg"); +// +//// client.publishDataStore(ws, +//// new DataStoreRegistrationRequest(myDS,parameters).getDatastore()); +// +// client.deleteWorkspace(ws,true); - String myDS=UUID.randomUUID().toString().replace("-", "_"); - HashMap parameters=new HashMap(); + // SLD + String myStyle=UUID.randomUUID().toString().replace("-", "_"); + client.createStyle(myStyle, Files.readFileAsString("clustered_points.sld", Charset.defaultCharset())); + assertTrue("SLD registered ",client.getStylesNames().contains(myStyle)); + client.deleteStyle(myStyle, true, true); + assertFalse("SLD Removed",client.getStylesNames().contains(myStyle)); -// parameters.put("dbtype","gpkg"); - parameters.put("url","gpkg"); - - client.publishDataStore(ws, - new DataStoreRegistrationRequest(myDS,parameters).getDatastore()); - - client.deleteWorkspace(ws,true); } -// @Test -// public void crudGPKG() throws RemoteException, Exception { -// assumeTrue(isTestInfrastructureEnabled()); -// GSRESTClient client=getClient(); -// -// client.authenticate(); -// String ws=UUID.randomUUID().toString().replace("-", "_"); -// client.createWorkspace(ws); -// -//String myDS=UUID.randomUUID().toString().replace("-", "_"); -// -// client.publishDataStore(ws, new DataStoreRegistrationRequest(myDS).getDatastore()); -// } } diff --git a/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericRESTClient.java b/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericRESTClient.java index 21bd34c..6a92845 100644 --- a/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericRESTClient.java +++ b/sdi-generic-client/src/main/java/org/gcube/spatial/data/clients/AbstractGenericRESTClient.java @@ -63,8 +63,8 @@ public abstract class AbstractGenericRESTClient implements GenericLoginClient{ log.warn("Unable to check instance "+conn,e); return false; } catch (Exception e) { - log.warn("Unable to check instance "+conn,e); - return false; + log.info("Server replied with error. Ignore this if it requires authentication. "+conn,e); + return true; } } diff --git a/sdi-interface/src/main/java/org/gcube/spatial/data/sdi/utils/Files.java b/sdi-interface/src/main/java/org/gcube/spatial/data/sdi/utils/Files.java new file mode 100644 index 0000000..832468e --- /dev/null +++ b/sdi-interface/src/main/java/org/gcube/spatial/data/sdi/utils/Files.java @@ -0,0 +1,49 @@ +package org.gcube.spatial.data.sdi.utils; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.nio.charset.Charset; +import java.nio.file.Paths; + + +public class Files { + + public static File getFileFromResources(String fileName) { + + ClassLoader classLoader =Files.class.getClassLoader(); + + URL resource = classLoader.getResource(fileName); + if (resource == null) { + throw new IllegalArgumentException("file is not found!"); + } else { + return new File(resource.getFile()); + } + + } + + + public static String readFileAsString(String path, Charset encoding) + throws IOException + { + byte[] encoded = java.nio.file.Files.readAllBytes(Paths.get(path)); + return new String(encoded, encoding); + } + + + public static String getName(String path) { + + return path.substring((path.contains(File.separator)?path.lastIndexOf(File.separator)+1:0) + ,(path.contains(".")?path.lastIndexOf("."):path.length())); + + } + + public static String fixFilename(String toFix) { + if(toFix.contains(".")) { + String prefix=toFix.substring(toFix.lastIndexOf(".")); + toFix=toFix.substring(0,toFix.lastIndexOf(".")); + return toFix.toLowerCase().replaceAll("[\\*\\+\\/\\\\ \\[\\]\\(\\)\\.\\\"\\:\\;\\|]","_")+prefix; + } + return toFix.toLowerCase().replaceAll("[\\*\\+\\/\\\\ \\[\\]\\(\\)\\.\\\"\\:\\;\\|]","_"); + } +}