Merged release gcube 4.15.0
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/spatial-data/sdi-service@182281 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
aa401e40cd
commit
ee43e4ed1f
87
pom.xml
87
pom.xml
|
@ -4,11 +4,11 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.gcube.tools</groupId>
|
<groupId>org.gcube.tools</groupId>
|
||||||
<artifactId>maven-parent</artifactId>
|
<artifactId>maven-parent</artifactId>
|
||||||
<version>LATEST</version>
|
<version>1.1.0</version>
|
||||||
</parent>
|
</parent>
|
||||||
<groupId>org.gcube.spatial.data</groupId>
|
<groupId>org.gcube.spatial.data</groupId>
|
||||||
<artifactId>sdi-service</artifactId>
|
<artifactId>sdi-service</artifactId>
|
||||||
<version>1.3.0-SNAPSHOT</version>
|
<version>1.4.0-SNAPSHOT</version>
|
||||||
<name>SDI Service</name>
|
<name>SDI Service</name>
|
||||||
<description>REST Interface towards SDI facilities</description>
|
<description>REST Interface towards SDI facilities</description>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
|
@ -35,24 +35,28 @@
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<dependency>
|
<!-- <dependency> -->
|
||||||
<groupId>org.gcube.spatial.data</groupId>
|
<!-- <groupId>org.gcube.spatial.data</groupId> -->
|
||||||
<artifactId>gis-interface</artifactId>
|
<!-- <artifactId>gis-interface</artifactId> -->
|
||||||
<version>[2.4.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
|
<!-- <version>[2.4.0-SNAPSHOT,3.0.0-SNAPSHOT)</version> -->
|
||||||
<exclusions>
|
<!-- <exclusions> -->
|
||||||
<exclusion>
|
<!-- <exclusion> -->
|
||||||
<artifactId>slf4j-log4j12</artifactId>
|
<!-- <artifactId>slf4j-log4j12</artifactId> -->
|
||||||
<groupId>org.slf4j</groupId>
|
<!-- <groupId>org.slf4j</groupId> -->
|
||||||
</exclusion>
|
<!-- </exclusion> -->
|
||||||
</exclusions>
|
<!-- </exclusions> -->
|
||||||
</dependency>
|
<!-- </dependency> -->
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.spatial.data</groupId>
|
<groupId>org.gcube.spatial.data</groupId>
|
||||||
<artifactId>sdi-interface</artifactId>
|
<artifactId>sdi-interface</artifactId>
|
||||||
<version>[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
|
<version>[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.portlets.user</groupId>
|
||||||
|
<artifactId>uri-resolver-manager</artifactId>
|
||||||
|
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.data.transfer</groupId>
|
<groupId>org.gcube.data.transfer</groupId>
|
||||||
|
@ -222,6 +226,61 @@
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- GN EXTERNAL -->
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.geosolutions</groupId>
|
||||||
|
<artifactId>geonetwork-manager</artifactId>
|
||||||
|
<version>1.4-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.geotoolkit</groupId>
|
||||||
|
<artifactId>geotk-metadata</artifactId>
|
||||||
|
<version>3.20</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.w3c</groupId>
|
||||||
|
<artifactId>dom</artifactId>
|
||||||
|
<version>2.3.0-jaxb-1.0.6</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.geotoolkit</groupId>
|
||||||
|
<artifactId>geotk-referencing</artifactId>
|
||||||
|
<version>3.20</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.thoughtworks.xstream</groupId>
|
||||||
|
<artifactId>xstream</artifactId>
|
||||||
|
<version>1.4.9</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- META -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.freemarker</groupId>
|
||||||
|
<artifactId>freemarker</artifactId>
|
||||||
|
<version>2.3.25-incubating</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- GS EXTERNAL -->
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.geosolutions</groupId>
|
||||||
|
<artifactId>geoserver-manager</artifactId>
|
||||||
|
<version>1.5.2</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>jcl-over-slf4j</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<!-- test -->
|
<!-- test -->
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -36,7 +36,7 @@ public class LocalConfiguration {
|
||||||
final static public String GEONETWORK_SE_CONFIDENTIAL_GROUP_PREFIX="gn.se.confidential.group.prefix";
|
final static public String GEONETWORK_SE_CONFIDENTIAL_GROUP_PREFIX="gn.se.confidential.group.prefix";
|
||||||
final static public String GEONETWORK_SE_CONTEXT_GROUP_PREFIX="gn.se.context.group.prefix";
|
final static public String GEONETWORK_SE_CONTEXT_GROUP_PREFIX="gn.se.context.group.prefix";
|
||||||
final static public String GEONETWORK_GROUP_ALL="gn.groups.all";
|
final static public String GEONETWORK_GROUP_ALL="gn.groups.all";
|
||||||
|
final static public String GEONETWORK_GROUP_MAX_LENGTH="gn.groups.max_length";
|
||||||
|
|
||||||
final static public String GEONETWORK_MANDATORY_SG="gn.mandatorySG";
|
final static public String GEONETWORK_MANDATORY_SG="gn.mandatorySG";
|
||||||
|
|
||||||
|
|
|
@ -1,70 +0,0 @@
|
||||||
package org.gcube.spatial.data.sdi;
|
|
||||||
|
|
||||||
import static org.gcube.common.authorization.client.Constants.authorizationService;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
import org.gcube.common.authorization.library.AuthorizationEntry;
|
|
||||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
|
||||||
import org.gcube.common.scope.api.ScopeProvider;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
public class ScopeUtils {
|
|
||||||
|
|
||||||
public static String getCurrentScope(){
|
|
||||||
// try{
|
|
||||||
// String token=SecurityTokenProvider.instance.get();
|
|
||||||
// log.debug("Token is : "+token);
|
|
||||||
// if(token==null) throw new Exception("Security Token is null");
|
|
||||||
// AuthorizationEntry entry = authorizationService().get(token);
|
|
||||||
// return entry.getContext();
|
|
||||||
// }catch(Exception e ){
|
|
||||||
// log.debug("Unable to resolve token, checking scope provider..",e);
|
|
||||||
// return ScopeProvider.instance.get();
|
|
||||||
// }
|
|
||||||
|
|
||||||
String scope=ScopeProvider.instance.get();
|
|
||||||
if(scope!=null) {
|
|
||||||
log.debug("Found scope provider {}, skipping token",scope);
|
|
||||||
return scope;
|
|
||||||
}else{
|
|
||||||
try{
|
|
||||||
log.debug("Scope provider not set, reverting to token");
|
|
||||||
String token=SecurityTokenProvider.instance.get();
|
|
||||||
log.debug("Token is : "+token);
|
|
||||||
if(token==null) throw new Exception("Security Token is null");
|
|
||||||
AuthorizationEntry entry = authorizationService().get(token);
|
|
||||||
return entry.getContext();
|
|
||||||
}catch(Exception e){
|
|
||||||
throw new RuntimeException("Unable to evaluate scope ",e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getCurrentScopeName(){
|
|
||||||
return getScopeName(getCurrentScope());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getScopeName(String scope) {
|
|
||||||
return scope.substring(scope.lastIndexOf('/')+1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static ArrayList<String> getParentScopes(String scope){
|
|
||||||
String[] splitted=scope.substring(1).split("/");
|
|
||||||
ArrayList<String> toReturn=new ArrayList<String>();
|
|
||||||
for(int i=0;i<splitted.length-1;i++){
|
|
||||||
toReturn.add(splitted[i]);
|
|
||||||
}
|
|
||||||
return toReturn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getParentScope(String scope) {
|
|
||||||
if(scope.lastIndexOf("/")==0) return null; // NO PARENT
|
|
||||||
else return scope.substring(0, scope.lastIndexOf("/"));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,7 +3,6 @@ package org.gcube.spatial.data.sdi.engine.impl;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import org.gcube.spatial.data.geonetwork.utils.ScopeUtils;
|
|
||||||
import org.gcube.spatial.data.sdi.engine.GISManager;
|
import org.gcube.spatial.data.sdi.engine.GISManager;
|
||||||
import org.gcube.spatial.data.sdi.engine.GeoNetworkManager;
|
import org.gcube.spatial.data.sdi.engine.GeoNetworkManager;
|
||||||
import org.gcube.spatial.data.sdi.engine.SDIManager;
|
import org.gcube.spatial.data.sdi.engine.SDIManager;
|
||||||
|
@ -18,6 +17,7 @@ import org.gcube.spatial.data.sdi.model.services.GeoNetworkServiceDefinition;
|
||||||
import org.gcube.spatial.data.sdi.model.services.GeoServerDefinition;
|
import org.gcube.spatial.data.sdi.model.services.GeoServerDefinition;
|
||||||
import org.gcube.spatial.data.sdi.model.services.ServiceDefinition;
|
import org.gcube.spatial.data.sdi.model.services.ServiceDefinition;
|
||||||
import org.gcube.spatial.data.sdi.model.services.ThreddsDefinition;
|
import org.gcube.spatial.data.sdi.model.services.ThreddsDefinition;
|
||||||
|
import org.gcube.spatial.data.sdi.utils.ScopeUtils;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
|
@ -33,12 +33,14 @@ public class ThreddsManagerImpl extends AbstractManager<ThreddsDescriptor, Thred
|
||||||
|
|
||||||
private ThreddsRetriever retriever=null;
|
private ThreddsRetriever retriever=null;
|
||||||
|
|
||||||
@Inject
|
private TemplateManager templateManager=null;
|
||||||
TemplateManager templateManager;
|
|
||||||
|
|
||||||
public ThreddsManagerImpl() {
|
|
||||||
|
@Inject
|
||||||
|
public ThreddsManagerImpl(TemplateManager templateManager) {
|
||||||
retriever=new ThreddsRetriever();
|
retriever=new ThreddsRetriever();
|
||||||
cluster=new ThreddsCluster(LocalConfiguration.getTTL(LocalConfiguration.THREDDS_CACHE_TTL),retriever,"Thredds Cache");
|
cluster=new ThreddsCluster(LocalConfiguration.getTTL(LocalConfiguration.THREDDS_CACHE_TTL),retriever,"Thredds Cache");
|
||||||
|
this.templateManager=templateManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -7,7 +7,7 @@ import java.util.Comparator;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||||
import org.gcube.spatial.data.geonetwork.utils.ScopeUtils;
|
import org.gcube.spatial.data.sdi.utils.ScopeUtils;
|
||||||
import org.gcube.spatial.data.sdi.NetUtils;
|
import org.gcube.spatial.data.sdi.NetUtils;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.ConfigurationNotFoundException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.ConfigurationNotFoundException;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceEndpointException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceEndpointException;
|
||||||
|
|
|
@ -18,7 +18,7 @@ public class GeoNetworkCluster extends AbstractCluster<GeoNetworkDescriptor,GeoN
|
||||||
private static final Comparator<GeoNetworkController> comparator=new Comparator<GeoNetworkController>() {
|
private static final Comparator<GeoNetworkController> comparator=new Comparator<GeoNetworkController>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(GeoNetworkController o1, GeoNetworkController o2) {
|
public int compare(GeoNetworkController o1, GeoNetworkController o2) {
|
||||||
return o1.getDescriptor().getPriority().compareTo(o2.getDescriptor().getPriority());
|
return o1.getPriority().compareTo(o2.getPriority());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,11 +41,12 @@ public class GeoNetworkCluster extends AbstractCluster<GeoNetworkDescriptor,GeoN
|
||||||
@Override
|
@Override
|
||||||
protected ArrayList<GeoNetworkController> getLiveControllerCollection() throws ConfigurationNotFoundException {
|
protected ArrayList<GeoNetworkController> getLiveControllerCollection() throws ConfigurationNotFoundException {
|
||||||
ArrayList<GeoNetworkController> toReturn= super.getLiveControllerCollection();
|
ArrayList<GeoNetworkController> toReturn= super.getLiveControllerCollection();
|
||||||
try{
|
for(GeoNetworkController controller:toReturn)
|
||||||
toReturn.get(0).configure();
|
try{
|
||||||
}catch(ServiceInteractionException e) {
|
controller.configure();
|
||||||
log.warn("Unexpected exception while configuring GeoNetwork SE [ID : "+toReturn.get(0).getServiceEndpoint().id()+"]",e);
|
}catch(ServiceInteractionException e) {
|
||||||
}
|
log.warn("Unexpected exception while configuring GeoNetwork SE [ID : "+controller.getServiceEndpoint().id()+"]",e);
|
||||||
|
}
|
||||||
return toReturn;
|
return toReturn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,49 +9,76 @@ import java.util.Set;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint.Property;
|
import org.gcube.common.resources.gcore.ServiceEndpoint.Property;
|
||||||
import org.gcube.spatial.data.geonetwork.model.Group;
|
|
||||||
import org.gcube.spatial.data.geonetwork.model.User;
|
|
||||||
import org.gcube.spatial.data.geonetwork.utils.UserUtils;
|
|
||||||
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
import org.gcube.spatial.data.sdi.ScopeUtils;
|
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceEndpointException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceEndpointException;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.OutdatedServiceEndpointException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.OutdatedServiceEndpointException;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.ServiceInteractionException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.ServiceInteractionException;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.gn.extension.GeoNetworkClient;
|
import org.gcube.spatial.data.sdi.engine.impl.gn.extension.GeoNetworkClient;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.gn.extension.GeoNetworkUtils;
|
import org.gcube.spatial.data.sdi.engine.impl.gn.extension.GeoNetworkUtils;
|
||||||
|
import org.gcube.spatial.data.sdi.engine.impl.gn.utils.UserUtils;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.is.ISUtils;
|
import org.gcube.spatial.data.sdi.engine.impl.is.ISUtils;
|
||||||
import org.gcube.spatial.data.sdi.model.credentials.AccessType;
|
import org.gcube.spatial.data.sdi.model.credentials.AccessType;
|
||||||
import org.gcube.spatial.data.sdi.model.credentials.Credentials;
|
import org.gcube.spatial.data.sdi.model.credentials.Credentials;
|
||||||
|
import org.gcube.spatial.data.sdi.model.gn.Group;
|
||||||
|
import org.gcube.spatial.data.sdi.model.gn.User;
|
||||||
import org.gcube.spatial.data.sdi.model.service.GeoNetworkDescriptor;
|
import org.gcube.spatial.data.sdi.model.service.GeoNetworkDescriptor;
|
||||||
|
import org.gcube.spatial.data.sdi.utils.ScopeUtils;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class GeoNetworkController extends GeoServiceController<GeoNetworkDescriptor>{
|
public class GeoNetworkController extends GeoServiceController<GeoNetworkDescriptor>{
|
||||||
|
|
||||||
String scopeUserPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_SCOPE_USER_PREFIX);
|
|
||||||
String scopePasswordPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_SCOPE_PASSWORD_PREFIX);
|
|
||||||
String ckanUserPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_CKAN_USER_PREFIX);
|
|
||||||
String ckanPasswordPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_CKAN_PASSWORD_PREFIX);
|
|
||||||
String managerUserPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_MANAGER_USER_PREFIX);
|
|
||||||
String managerPasswordPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_MANAGER_PASSWORD_PREFIX);
|
|
||||||
String assignedScopePrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_ASSIGNED_SCOPE_PREFIX);
|
|
||||||
String defaultGroupPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_DEFAULT_GROUP_PREFIX);
|
|
||||||
String sharedGroupPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_SHARED_GROUP_PREFIX);
|
|
||||||
String confidentialGroupPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_CONFIDENTIAL_GROUP_PREFIX);
|
|
||||||
String contextGroupPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_CONTEXT_GROUP_PREFIX);
|
|
||||||
String suffixesProperty=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_SUFFIXES);
|
|
||||||
String priorityProperty=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_PRIORITY);
|
|
||||||
|
|
||||||
private String suffixes=null;
|
private static String scopeUserPrefix=null;
|
||||||
|
private static String scopePasswordPrefix=null;
|
||||||
|
private static String ckanUserPrefix=null;
|
||||||
|
private static String ckanPasswordPrefix=null;
|
||||||
|
private static String managerUserPrefix=null;
|
||||||
|
private static String managerPasswordPrefix=null;
|
||||||
|
private static String assignedScopePrefix=null;
|
||||||
|
private static String defaultGroupPrefix=null;
|
||||||
|
private static String sharedGroupPrefix=null;
|
||||||
|
private static String confidentialGroupPrefix=null;
|
||||||
|
private static String contextGroupPrefix=null;
|
||||||
|
private static String suffixesProperty=null;
|
||||||
|
private static String priorityProperty=null;
|
||||||
|
|
||||||
|
static{
|
||||||
|
|
||||||
|
scopeUserPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_SCOPE_USER_PREFIX);
|
||||||
|
scopePasswordPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_SCOPE_PASSWORD_PREFIX);
|
||||||
|
ckanUserPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_CKAN_USER_PREFIX);
|
||||||
|
ckanPasswordPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_CKAN_PASSWORD_PREFIX);
|
||||||
|
managerUserPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_MANAGER_USER_PREFIX);
|
||||||
|
managerPasswordPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_MANAGER_PASSWORD_PREFIX);
|
||||||
|
assignedScopePrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_ASSIGNED_SCOPE_PREFIX);
|
||||||
|
defaultGroupPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_DEFAULT_GROUP_PREFIX);
|
||||||
|
sharedGroupPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_SHARED_GROUP_PREFIX);
|
||||||
|
confidentialGroupPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_CONFIDENTIAL_GROUP_PREFIX);
|
||||||
|
contextGroupPrefix=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_CONTEXT_GROUP_PREFIX);
|
||||||
|
suffixesProperty=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_SUFFIXES);
|
||||||
|
priorityProperty=LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_SE_PRIORITY);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String suffixes;
|
||||||
private Integer priority;
|
private Integer priority;
|
||||||
|
|
||||||
|
|
||||||
|
public Integer getPriority() {
|
||||||
|
return priority;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public GeoNetworkController(ServiceEndpoint serviceEndpoint) throws InvalidServiceEndpointException {
|
public GeoNetworkController(ServiceEndpoint serviceEndpoint) throws InvalidServiceEndpointException {
|
||||||
super(serviceEndpoint);
|
super(serviceEndpoint);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setServiceEndpoint(ServiceEndpoint toSet) {
|
||||||
|
super.setServiceEndpoint(toSet);
|
||||||
suffixes=getSEProperty(suffixesProperty, true);
|
suffixes=getSEProperty(suffixesProperty, true);
|
||||||
priority=Integer.parseInt(getSEProperty(priorityProperty, true));
|
priority=Integer.parseInt(getSEProperty(priorityProperty, true));
|
||||||
}
|
}
|
||||||
|
@ -63,6 +90,7 @@ public class GeoNetworkController extends GeoServiceController<GeoNetworkDescrip
|
||||||
descriptor.setBaseEndpoint(baseURL);
|
descriptor.setBaseEndpoint(baseURL);
|
||||||
descriptor.setVersion(version);
|
descriptor.setVersion(version);
|
||||||
String currentScopeName=ScopeUtils.getCurrentScopeName();
|
String currentScopeName=ScopeUtils.getCurrentScopeName();
|
||||||
|
|
||||||
String suffix=getSuffixByScope(currentScopeName);
|
String suffix=getSuffixByScope(currentScopeName);
|
||||||
|
|
||||||
|
|
||||||
|
@ -115,10 +143,13 @@ public class GeoNetworkController extends GeoServiceController<GeoNetworkDescrip
|
||||||
@Override
|
@Override
|
||||||
protected void initServiceEndpoint() throws OutdatedServiceEndpointException, ServiceInteractionException {
|
protected void initServiceEndpoint() throws OutdatedServiceEndpointException, ServiceInteractionException {
|
||||||
String scopeName=ScopeUtils.getCurrentScopeName();
|
String scopeName=ScopeUtils.getCurrentScopeName();
|
||||||
String suffix=getSuffixByScope(scopeName);
|
|
||||||
if(suffix==null) {
|
try {
|
||||||
|
if(getSuffixByScope(scopeName)==null) throw new InvalidServiceEndpointException("Scope not present in resource");
|
||||||
|
}catch(InvalidServiceEndpointException e) {
|
||||||
insertScopeInfo(ScopeUtils.getCurrentScope());
|
insertScopeInfo(ScopeUtils.getCurrentScope());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -144,20 +175,29 @@ public class GeoNetworkController extends GeoServiceController<GeoNetworkDescrip
|
||||||
|
|
||||||
// gathering users and groups from siblings
|
// gathering users and groups from siblings
|
||||||
log.debug("Getting Siblings information from SE..");
|
log.debug("Getting Siblings information from SE..");
|
||||||
for(String siblingScope:ISUtils.getSiblingsScopesInResource(serviceEndpoint, scope)) {
|
for(String siblingScope:ISUtils.getSiblingsScopesInResource(serviceEndpoint, scope))
|
||||||
for(String username:getUserNamesByScope(siblingScope, true, true, false))
|
try {
|
||||||
sharedGroupExternalUsers.add(UserUtils.getByName(existingUsers, username));
|
getSuffixByScope(ScopeUtils.getScopeName(siblingScope));
|
||||||
|
for(String username:getUserNamesByScope(siblingScope, true, true, false))
|
||||||
|
sharedGroupExternalUsers.add(UserUtils.getByName(existingUsers, username));
|
||||||
|
|
||||||
|
externalGroupsToAccess.addAll(getGroupIDSByScope(siblingScope, true, false, false));
|
||||||
|
}catch(InvalidServiceEndpointException e) {
|
||||||
|
log.debug("Sibling scope {} not found in resource. Skipping.",siblingScope);
|
||||||
|
}
|
||||||
|
|
||||||
externalGroupsToAccess.addAll(getGroupIDSByScope(siblingScope, true, false, false));
|
|
||||||
}
|
|
||||||
log.debug("Getting Parents information from SE..");
|
log.debug("Getting Parents information from SE..");
|
||||||
// gathering users and groups from parents
|
// gathering users and groups from parents
|
||||||
for(String parentScope:ScopeUtils.getParentScopes(scope)) {
|
for(String parentScope:ScopeUtils.getParentScopes(scope))
|
||||||
for(String username:getUserNamesByScope(parentScope, true, true, false))
|
try {
|
||||||
sharedGroupExternalUsers.add(UserUtils.getByName(existingUsers, username));
|
getSuffixByScope(ScopeUtils.getScopeName(parentScope));
|
||||||
|
for(String username:getUserNamesByScope(parentScope, true, true, false))
|
||||||
|
sharedGroupExternalUsers.add(UserUtils.getByName(existingUsers, username));
|
||||||
|
|
||||||
externalGroupsToAccess.addAll(getGroupIDSByScope(parentScope, true, true, false));
|
externalGroupsToAccess.addAll(getGroupIDSByScope(parentScope, true, true, false));
|
||||||
}
|
}catch(InvalidServiceEndpointException e) {
|
||||||
|
log.debug("Parent scope {} not found in resource. Skipping it. ",parentScope);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -170,13 +210,15 @@ public class GeoNetworkController extends GeoServiceController<GeoNetworkDescrip
|
||||||
// create user & groups [sh,conf,ctx]
|
// create user & groups [sh,conf,ctx]
|
||||||
Group shared=GeoNetworkUtils.generateGroup(existingGroups, "Shared_"+scopeName, "Shared metadata group for "+scopeName, contactMail);
|
Group shared=GeoNetworkUtils.generateGroup(existingGroups, "Shared_"+scopeName, "Shared metadata group for "+scopeName, contactMail);
|
||||||
shared=gnClient.createGroup(shared);
|
shared=gnClient.createGroup(shared);
|
||||||
|
existingGroups.add(shared);
|
||||||
|
|
||||||
Group context=GeoNetworkUtils.generateGroup(existingGroups, "Context_"+scopeName, "Context metadata group for "+scopeName, contactMail);
|
Group context=GeoNetworkUtils.generateGroup(existingGroups, "Context_"+scopeName, "Context metadata group for "+scopeName, contactMail);
|
||||||
context=gnClient.createGroup(context);
|
context=gnClient.createGroup(context);
|
||||||
|
existingGroups.add(context);
|
||||||
|
|
||||||
Group confidential=GeoNetworkUtils.generateGroup(existingGroups, "Confidential_"+scopeName, "Confidential metadata group for "+scopeName, contactMail);
|
Group confidential=GeoNetworkUtils.generateGroup(existingGroups, "Confidential_"+scopeName, "Confidential metadata group for "+scopeName, contactMail);
|
||||||
confidential=gnClient.createGroup(context);
|
confidential=gnClient.createGroup(confidential);
|
||||||
|
existingGroups.add(confidential);
|
||||||
|
|
||||||
// Giving access to shared group
|
// Giving access to shared group
|
||||||
log.debug("Giving access to shared group from external scopes..");
|
log.debug("Giving access to shared group from external scopes..");
|
||||||
|
@ -187,7 +229,9 @@ public class GeoNetworkController extends GeoServiceController<GeoNetworkDescrip
|
||||||
log.debug("Creating users..");
|
log.debug("Creating users..");
|
||||||
// CKAN -> sh,ctx
|
// CKAN -> sh,ctx
|
||||||
User ckan=GeoNetworkUtils.generateUser(existingUsers, passwordLength, "CKAN_"+scopeName);
|
User ckan=GeoNetworkUtils.generateUser(existingUsers, passwordLength, "CKAN_"+scopeName);
|
||||||
ckan=gnClient.createUsers(ckan, Arrays.asList(shared.getId(),context.getId()));
|
ckan.setId(gnClient.createUsers(ckan, Arrays.asList(shared.getId(),context.getId())).getId());
|
||||||
|
existingUsers.add(ckan);
|
||||||
|
|
||||||
|
|
||||||
// CTX-USR -> sh,ctx,siblings [sh], parents [sh,ctx]
|
// CTX-USR -> sh,ctx,siblings [sh], parents [sh,ctx]
|
||||||
User ctx=GeoNetworkUtils.generateUser(existingUsers, passwordLength, "Ctx_"+scopeName);
|
User ctx=GeoNetworkUtils.generateUser(existingUsers, passwordLength, "Ctx_"+scopeName);
|
||||||
|
@ -195,12 +239,14 @@ public class GeoNetworkController extends GeoServiceController<GeoNetworkDescrip
|
||||||
ctxUserAccessibleGroups.addAll(externalGroupsToAccess);
|
ctxUserAccessibleGroups.addAll(externalGroupsToAccess);
|
||||||
ctxUserAccessibleGroups.add(shared.getId());
|
ctxUserAccessibleGroups.add(shared.getId());
|
||||||
ctxUserAccessibleGroups.add(context.getId());
|
ctxUserAccessibleGroups.add(context.getId());
|
||||||
ctx=gnClient.createUsers(ctx, ctxUserAccessibleGroups);
|
ctx.setId(gnClient.createUsers(ctx, ctxUserAccessibleGroups).getId());
|
||||||
|
existingUsers.add(ctx);
|
||||||
|
|
||||||
// CTX-MANAGER -> sh,ctx,conf siblings [sh], parents [sh,ctx]
|
// CTX-MANAGER -> sh,ctx,conf siblings [sh], parents [sh,ctx]
|
||||||
User manager=GeoNetworkUtils.generateUser(existingUsers, passwordLength, "Mng_"+scopeName);
|
User manager=GeoNetworkUtils.generateUser(existingUsers, passwordLength, "Mng_"+scopeName);
|
||||||
ctxUserAccessibleGroups.add(confidential.getId());
|
ctxUserAccessibleGroups.add(confidential.getId());
|
||||||
|
manager.setId(gnClient.createUsers(manager, ctxUserAccessibleGroups).getId());
|
||||||
|
existingUsers.add(manager);
|
||||||
|
|
||||||
// Setting information in Service Endpoint
|
// Setting information in Service Endpoint
|
||||||
log.debug("Inserting configuration in Service Endpoint");
|
log.debug("Inserting configuration in Service Endpoint");
|
||||||
|
@ -210,16 +256,20 @@ public class GeoNetworkController extends GeoServiceController<GeoNetworkDescrip
|
||||||
ArrayList<Property> toUpdateProperties=new ArrayList<>();
|
ArrayList<Property> toUpdateProperties=new ArrayList<>();
|
||||||
toUpdateProperties.add( new Property().nameAndValue(assignedScopePrefix+generatedSuffix, scopeName));
|
toUpdateProperties.add( new Property().nameAndValue(assignedScopePrefix+generatedSuffix, scopeName));
|
||||||
toUpdateProperties.add( new Property().nameAndValue(scopeUserPrefix+generatedSuffix, ctx.getUsername()));
|
toUpdateProperties.add( new Property().nameAndValue(scopeUserPrefix+generatedSuffix, ctx.getUsername()));
|
||||||
toUpdateProperties.add( new Property().nameAndValue(scopePasswordPrefix+generatedSuffix, ctx.getPassword()).encrypted(true));
|
toUpdateProperties.add( new Property().nameAndValue(scopePasswordPrefix+generatedSuffix, ISUtils.encryptString(ctx.getPassword())).encrypted(true));
|
||||||
toUpdateProperties.add( new Property().nameAndValue(ckanUserPrefix+generatedSuffix, ckan.getUsername()));
|
toUpdateProperties.add( new Property().nameAndValue(ckanUserPrefix+generatedSuffix, ckan.getUsername()));
|
||||||
toUpdateProperties.add( new Property().nameAndValue(ckanPasswordPrefix+generatedSuffix, ckan.getPassword()).encrypted(true));
|
toUpdateProperties.add( new Property().nameAndValue(ckanPasswordPrefix+generatedSuffix, ISUtils.encryptString(ckan.getPassword())).encrypted(true));
|
||||||
toUpdateProperties.add( new Property().nameAndValue(managerUserPrefix+generatedSuffix, manager.getUsername()));
|
toUpdateProperties.add( new Property().nameAndValue(managerUserPrefix+generatedSuffix, manager.getUsername()));
|
||||||
toUpdateProperties.add( new Property().nameAndValue(managerPasswordPrefix+generatedSuffix, manager.getPassword()).encrypted(true));
|
toUpdateProperties.add( new Property().nameAndValue(managerPasswordPrefix+generatedSuffix, ISUtils.encryptString(manager.getPassword())).encrypted(true));
|
||||||
toUpdateProperties.add( new Property().nameAndValue(sharedGroupPrefix+generatedSuffix, shared.getId()+""));
|
toUpdateProperties.add( new Property().nameAndValue(sharedGroupPrefix+generatedSuffix, shared.getId()+""));
|
||||||
toUpdateProperties.add( new Property().nameAndValue(defaultGroupPrefix+generatedSuffix, shared.getId()+""));
|
toUpdateProperties.add( new Property().nameAndValue(defaultGroupPrefix+generatedSuffix, shared.getId()+""));
|
||||||
toUpdateProperties.add( new Property().nameAndValue(confidentialGroupPrefix+generatedSuffix, confidential.getId()+""));
|
toUpdateProperties.add( new Property().nameAndValue(confidentialGroupPrefix+generatedSuffix, confidential.getId()+""));
|
||||||
toUpdateProperties.add( new Property().nameAndValue(contextGroupPrefix+generatedSuffix, context.getId()+""));
|
toUpdateProperties.add( new Property().nameAndValue(contextGroupPrefix+generatedSuffix, context.getId()+""));
|
||||||
toUpdateProperties.add(new Property().nameAndValue(suffixesProperty, suffixes+","+generatedSuffix));
|
|
||||||
|
|
||||||
|
|
||||||
|
String suffixesList=(suffixes!=null&&!suffixes.trim().isEmpty()&&suffixes!=",")?suffixes+","+generatedSuffix:generatedSuffix;
|
||||||
|
toUpdateProperties.add(new Property().nameAndValue(suffixesProperty, suffixesList));
|
||||||
accessPoint.properties().addAll(toUpdateProperties);
|
accessPoint.properties().addAll(toUpdateProperties);
|
||||||
throw new OutdatedServiceEndpointException("Created scope configuration for "+scopeName);
|
throw new OutdatedServiceEndpointException("Created scope configuration for "+scopeName);
|
||||||
}
|
}
|
||||||
|
@ -227,15 +277,19 @@ public class GeoNetworkController extends GeoServiceController<GeoNetworkDescrip
|
||||||
|
|
||||||
private String getSuffixByScope(String scopeName) {
|
private String getSuffixByScope(String scopeName) {
|
||||||
log.debug("looking for scope {} suffix. Available suffixes are : {} ",scopeName,suffixes);
|
log.debug("looking for scope {} suffix. Available suffixes are : {} ",scopeName,suffixes);
|
||||||
for(String suff:suffixes.split(","))
|
if(suffixes!=null)
|
||||||
if(getSEProperty(assignedScopePrefix+suff, true).equals(scopeName)) return suff;
|
for(String suff:suffixes.split(","))
|
||||||
|
if(suff!=null&&!suff.isEmpty()) {
|
||||||
|
String propertyValue=getSEProperty(assignedScopePrefix+suff, false);
|
||||||
|
if(propertyValue!=null&&propertyValue.equals(scopeName)) return suff;
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static String generateSuffix(String existingSuffixes){
|
private static String generateSuffix(String existingSuffixes){
|
||||||
log.debug("Generating suffix, existing are : "+existingSuffixes);
|
log.debug("Generating suffix, existing are : "+existingSuffixes);
|
||||||
String[] suffixArray=existingSuffixes.split(",");
|
String[] suffixArray=existingSuffixes==null?new String[0]:existingSuffixes.split(",");
|
||||||
int maxIndex=0;
|
int maxIndex=0;
|
||||||
for(String suff:suffixArray){
|
for(String suff:suffixArray){
|
||||||
try{
|
try{
|
||||||
|
|
|
@ -10,7 +10,7 @@ import java.util.Set;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint.Property;
|
import org.gcube.common.resources.gcore.ServiceEndpoint.Property;
|
||||||
import org.gcube.spatial.data.geonetwork.utils.ScopeUtils;
|
import org.gcube.spatial.data.sdi.utils.ScopeUtils;
|
||||||
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceEndpointException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceEndpointException;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.OutdatedServiceEndpointException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.OutdatedServiceEndpointException;
|
||||||
|
|
|
@ -52,7 +52,7 @@ public abstract class GeoServiceController<T extends GeoServiceDescriptor> {
|
||||||
|
|
||||||
public void onUpdateServiceEndpoint() {
|
public void onUpdateServiceEndpoint() {
|
||||||
setServiceEndpoint(ISUtils.updateAndWait(serviceEndpoint));
|
setServiceEndpoint(ISUtils.updateAndWait(serviceEndpoint));
|
||||||
cachedDescriptor.invalidate();
|
if(cachedDescriptor!=null)cachedDescriptor.invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setServiceEndpoint(ServiceEndpoint toSet) {
|
protected void setServiceEndpoint(ServiceEndpoint toSet) {
|
||||||
|
@ -84,7 +84,8 @@ public abstract class GeoServiceController<T extends GeoServiceDescriptor> {
|
||||||
|
|
||||||
protected String getSEProperty(String property, boolean mandatory) throws InvalidServiceEndpointException{
|
protected String getSEProperty(String property, boolean mandatory) throws InvalidServiceEndpointException{
|
||||||
if(!propertyMap.containsKey(property))
|
if(!propertyMap.containsKey(property))
|
||||||
if(mandatory)throw new InvalidServiceEndpointException("Expected property "+property+" was not found.");
|
if(mandatory)
|
||||||
|
throw new InvalidServiceEndpointException("Expected property "+property+" was not found. in Resource ID "+getServiceEndpoint().id());
|
||||||
else return null;
|
else return null;
|
||||||
else {
|
else {
|
||||||
Property prop=propertyMap.get(property);
|
Property prop=propertyMap.get(property);
|
||||||
|
|
|
@ -5,11 +5,11 @@ import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.gcube.spatial.data.geonetwork.model.Group;
|
import org.gcube.spatial.data.sdi.engine.impl.gn.utils.GroupUtils;
|
||||||
import org.gcube.spatial.data.geonetwork.model.User;
|
import org.gcube.spatial.data.sdi.engine.impl.gn.utils.UserUtils;
|
||||||
import org.gcube.spatial.data.geonetwork.model.User.Profile;
|
import org.gcube.spatial.data.sdi.model.gn.Group;
|
||||||
import org.gcube.spatial.data.geonetwork.utils.GroupUtils;
|
import org.gcube.spatial.data.sdi.model.gn.User;
|
||||||
import org.gcube.spatial.data.geonetwork.utils.UserUtils;
|
import org.gcube.spatial.data.sdi.model.gn.User.Profile;
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
import it.geosolutions.geonetwork.GNClient;
|
import it.geosolutions.geonetwork.GNClient;
|
||||||
|
|
|
@ -5,8 +5,8 @@ import java.net.MalformedURLException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.gcube.spatial.data.geonetwork.model.User;
|
import org.gcube.spatial.data.sdi.model.gn.User;
|
||||||
import org.gcube.spatial.data.geonetwork.model.User.Profile;
|
import org.gcube.spatial.data.sdi.model.gn.User.Profile;
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
import org.jdom.output.Format;
|
import org.jdom.output.Format;
|
||||||
import org.jdom.output.XMLOutputter;
|
import org.jdom.output.XMLOutputter;
|
||||||
|
|
|
@ -5,13 +5,12 @@ import java.util.Collection;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.gcube.spatial.data.geonetwork.model.Group;
|
|
||||||
import org.gcube.spatial.data.geonetwork.model.User;
|
|
||||||
import org.gcube.spatial.data.geonetwork.model.faults.MissingServiceEndpointException;
|
|
||||||
import org.gcube.spatial.data.geonetwork.utils.GroupUtils;
|
|
||||||
import org.gcube.spatial.data.geonetwork.utils.UserUtils;
|
|
||||||
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.ServiceInteractionException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.ServiceInteractionException;
|
||||||
|
import org.gcube.spatial.data.sdi.engine.impl.gn.utils.GroupUtils;
|
||||||
|
import org.gcube.spatial.data.sdi.engine.impl.gn.utils.UserUtils;
|
||||||
|
import org.gcube.spatial.data.sdi.model.gn.Group;
|
||||||
|
import org.gcube.spatial.data.sdi.model.gn.User;
|
||||||
import org.gcube.spatial.data.sdi.model.service.GeoNetworkDescriptor;
|
import org.gcube.spatial.data.sdi.model.service.GeoNetworkDescriptor;
|
||||||
import org.gcube.spatial.data.sdi.model.service.Version;
|
import org.gcube.spatial.data.sdi.model.service.Version;
|
||||||
|
|
||||||
|
@ -30,16 +29,17 @@ public class GeoNetworkClient {
|
||||||
|
|
||||||
private ServerAccess access;
|
private ServerAccess access;
|
||||||
private GNClientExtension theClient=null;
|
private GNClientExtension theClient=null;
|
||||||
private GeoNetworkDescriptor descriptor;
|
private GeoNetworkDescriptor descriptor=null;
|
||||||
|
|
||||||
|
|
||||||
public GeoNetworkClient(String baseURL, Version version, String password, String user, GeoNetworkDescriptor descriptor) {
|
public GeoNetworkClient(String baseURL, Version version, String password, String user, GeoNetworkDescriptor descriptor) {
|
||||||
this(baseURL,version,password,user);
|
this(baseURL,version,password,user);
|
||||||
theClient=new GNClientExtension(access);
|
this.descriptor=descriptor;
|
||||||
}
|
}
|
||||||
public GeoNetworkClient(String baseURL, Version version, String password, String user) {
|
public GeoNetworkClient(String baseURL, Version version, String password, String user) {
|
||||||
super();
|
super();
|
||||||
this.access=new ServerAccess(baseURL,version,password,user);
|
this.access=new ServerAccess(baseURL,version,password,user);
|
||||||
|
theClient=new GNClientExtension(access);
|
||||||
}
|
}
|
||||||
|
|
||||||
//************************************** GROUPS AND USERS
|
//************************************** GROUPS AND USERS
|
||||||
|
|
|
@ -4,11 +4,12 @@ import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.gcube.spatial.data.geonetwork.model.Group;
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
import org.gcube.spatial.data.geonetwork.model.User;
|
|
||||||
import org.gcube.spatial.data.geonetwork.model.User.Profile;
|
|
||||||
import org.gcube.spatial.data.geonetwork.utils.StringUtils;
|
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.gn.MetadataNotFoundException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.gn.MetadataNotFoundException;
|
||||||
|
import org.gcube.spatial.data.sdi.model.gn.Group;
|
||||||
|
import org.gcube.spatial.data.sdi.model.gn.User;
|
||||||
|
import org.gcube.spatial.data.sdi.model.gn.User.Profile;
|
||||||
|
import org.gcube.spatial.data.sdi.utils.StringUtils;
|
||||||
|
|
||||||
import it.geosolutions.geonetwork.exception.GNLibException;
|
import it.geosolutions.geonetwork.exception.GNLibException;
|
||||||
import it.geosolutions.geonetwork.exception.GNServerException;
|
import it.geosolutions.geonetwork.exception.GNServerException;
|
||||||
|
@ -21,7 +22,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class GeoNetworkUtils {
|
public class GeoNetworkUtils {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a suffix to groupName if needed
|
* Adds a suffix to groupName if needed
|
||||||
*
|
*
|
||||||
|
@ -38,7 +38,9 @@ public class GeoNetworkUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
String toUseName=clashSafeString(groupName,existingNames);
|
String toUseName=clashSafeString(groupName,existingNames);
|
||||||
|
Integer maxLength=Integer.parseInt(LocalConfiguration.getProperty(LocalConfiguration.GEONETWORK_GROUP_MAX_LENGTH, "30"));
|
||||||
|
if(toUseName.length()>maxLength)
|
||||||
|
return generateGroup(existing, toUseName.substring(0, maxLength-2), description, contactMail);
|
||||||
return new Group(toUseName, description, contactMail, maxId+1);
|
return new Group(toUseName, description, contactMail, maxId+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +53,7 @@ public class GeoNetworkUtils {
|
||||||
|
|
||||||
return new User(0, // NB will be updated when creating it..
|
return new User(0, // NB will be updated when creating it..
|
||||||
toUseUserName,
|
toUseUserName,
|
||||||
StringUtils.generateRandomString(passwordLength),Profile.RegisteredUser);
|
StringUtils.generateRandomString(passwordLength),Profile.Reviewer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
package org.gcube.spatial.data.sdi.engine.impl.gn.utils;
|
||||||
|
|
||||||
|
import java.io.StringReader;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.xml.xpath.XPath;
|
||||||
|
import javax.xml.xpath.XPathFactory;
|
||||||
|
|
||||||
|
import org.gcube.spatial.data.sdi.model.gn.Group;
|
||||||
|
import org.gcube.spatial.data.sdi.utils.StringUtils;
|
||||||
|
import org.jdom.Element;
|
||||||
|
import org.jdom.input.SAXBuilder;
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import it.geosolutions.geonetwork.exception.GNLibException;
|
||||||
|
|
||||||
|
public class GroupUtils {
|
||||||
|
|
||||||
|
private static XPath xpath = XPathFactory.newInstance().newXPath();
|
||||||
|
|
||||||
|
|
||||||
|
public static Set<Group> parseGroupXMLResponse(String xml) throws GNLibException {
|
||||||
|
try{
|
||||||
|
HashSet<Group> toReturn=new HashSet<>();
|
||||||
|
SAXBuilder builder = new SAXBuilder();
|
||||||
|
org.jdom.Element responseEl= builder.build(new StringReader(xml)).detachRootElement();
|
||||||
|
for(Object recordObj:responseEl.getChildren("record")){
|
||||||
|
org.jdom.Element record=(org.jdom.Element) recordObj;
|
||||||
|
Integer id=Integer.parseInt(record.getChild("id").getText());
|
||||||
|
String name=record.getChild("name").getText();
|
||||||
|
Element descElement=record.getChild("description");
|
||||||
|
String description=descElement!=null?descElement.getText():"";
|
||||||
|
Element mailElement=record.getChild("email");
|
||||||
|
String email=mailElement!=null?mailElement.getText():"";
|
||||||
|
toReturn.add(new Group(name,description,email,id));
|
||||||
|
}
|
||||||
|
return toReturn;
|
||||||
|
}catch(Exception e){
|
||||||
|
throw new GNLibException("Unable to parse response", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Set<Group> parseUserJSONResponse(String groupResponse) throws GNLibException {
|
||||||
|
try{
|
||||||
|
HashSet<Group> toReturn=new HashSet<>();
|
||||||
|
JSONArray array=new JSONArray(groupResponse);
|
||||||
|
for(int i=0;i<array.length();i++){
|
||||||
|
JSONObject groupObj=array.getJSONObject(i);
|
||||||
|
Integer id=groupObj.getInt("id");
|
||||||
|
String name=groupObj.getString("name");
|
||||||
|
String description=groupObj.getString("description");
|
||||||
|
String email=groupObj.getString("email");
|
||||||
|
|
||||||
|
toReturn.add(new Group(name,description,email,id));
|
||||||
|
}
|
||||||
|
return toReturn;
|
||||||
|
}catch(Exception e){
|
||||||
|
throw new GNLibException("Unable to parse group JSON response ",e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static Group generateRandomGroup(Set<Group> existing, Integer nameLenght){
|
||||||
|
Set<String> existingNames=new HashSet<>();
|
||||||
|
int maxId=0;
|
||||||
|
for(Group g:existing){
|
||||||
|
existingNames.add(g.getName());
|
||||||
|
if(maxId<g.getId())maxId=g.getId();
|
||||||
|
}
|
||||||
|
return new Group(StringUtils.generateNewRandom(existingNames, nameLenght), "generated group", "no.mail@nothing.org", maxId+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static Group getByName(Set<Group> toLookInto,String toLookFor){
|
||||||
|
for(Group g:toLookInto)
|
||||||
|
if(g.getName().equals(toLookFor)) return g;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
package org.gcube.spatial.data.sdi.engine.impl.gn.utils;
|
||||||
|
|
||||||
|
import java.io.StringReader;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.gcube.spatial.data.sdi.model.gn.User;
|
||||||
|
import org.gcube.spatial.data.sdi.model.gn.User.Profile;
|
||||||
|
import org.gcube.spatial.data.sdi.utils.StringUtils;
|
||||||
|
import org.jdom.input.SAXBuilder;
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import it.geosolutions.geonetwork.exception.GNLibException;
|
||||||
|
|
||||||
|
public class UserUtils {
|
||||||
|
|
||||||
|
|
||||||
|
public static Set<User> parseUserXMLResponse(String toParse) throws GNLibException{
|
||||||
|
try{
|
||||||
|
HashSet<User> toReturn=new HashSet<>();
|
||||||
|
SAXBuilder builder = new SAXBuilder();
|
||||||
|
org.jdom.Element responseEl= builder.build(new StringReader(toParse)).detachRootElement();
|
||||||
|
for(Object recordObj:responseEl.getChildren("record")){
|
||||||
|
org.jdom.Element record=(org.jdom.Element) recordObj;
|
||||||
|
Integer id=Integer.parseInt(record.getChildText("id"));
|
||||||
|
String username=record.getChildText("username");
|
||||||
|
String password=record.getChildText("password");
|
||||||
|
Profile profile=Profile.valueOf(record.getChildText("profile"));
|
||||||
|
toReturn.add(new User(id,username, password, profile));
|
||||||
|
}
|
||||||
|
return toReturn;
|
||||||
|
}catch(Exception e){
|
||||||
|
throw new GNLibException("Unable to parse users XML response", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static Set<User> parseUserJSONResponse(String toParse)throws GNLibException{
|
||||||
|
try{
|
||||||
|
HashSet<User> toReturn=new HashSet<>();
|
||||||
|
JSONArray array=new JSONArray(toParse);
|
||||||
|
for(int i=0;i<array.length();i++){
|
||||||
|
JSONObject userObj=array.getJSONObject(i);
|
||||||
|
Integer id=userObj.getInt("id");
|
||||||
|
String username=userObj.getString("username");
|
||||||
|
String password=null; // password is not returned anymore by service responses
|
||||||
|
Profile profile=Profile.valueOf(userObj.getString("profile"));
|
||||||
|
toReturn.add(new User(id, username, password, profile));
|
||||||
|
}
|
||||||
|
return toReturn;
|
||||||
|
}catch(Exception e){
|
||||||
|
throw new GNLibException("Unable to parse users JSON response ",e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static User generateRandomUser(Set<User> existing, Integer nameLenght, Integer passwordLength){
|
||||||
|
Set<String> existingNames=new HashSet<>();
|
||||||
|
for(User g:existing)existingNames.add(g.getUsername());
|
||||||
|
return new User(0,StringUtils.generateNewRandom(existingNames, nameLenght),StringUtils.generateRandomString(passwordLength),Profile.RegisteredUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static Set<Integer> parseGroupsByUserResponse(String toParse) throws GNLibException{
|
||||||
|
try{
|
||||||
|
HashSet<Integer> toReturn=new HashSet<>();
|
||||||
|
SAXBuilder builder = new SAXBuilder();
|
||||||
|
org.jdom.Element responseEl= builder.build(new StringReader(toParse)).detachRootElement();
|
||||||
|
for(Object recordObj:responseEl.getChildren("group")){
|
||||||
|
org.jdom.Element record=(org.jdom.Element) recordObj;
|
||||||
|
Integer id=Integer.parseInt(record.getChildText("id"));
|
||||||
|
toReturn.add(id);
|
||||||
|
}
|
||||||
|
return toReturn;
|
||||||
|
}catch(Exception e){
|
||||||
|
throw new GNLibException("Unable to Groups By User XML response", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static User getByName(Set<User> toLookInto,String toLookFor){
|
||||||
|
for(User g:toLookInto)
|
||||||
|
if(g.getUsername().equals(toLookFor)) return g;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -9,7 +9,7 @@ import org.gcube.common.resources.gcore.GCoreEndpoint;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint.Profile;
|
import org.gcube.common.resources.gcore.ServiceEndpoint.Profile;
|
||||||
import org.gcube.common.resources.gcore.common.Platform;
|
import org.gcube.common.resources.gcore.common.Platform;
|
||||||
import org.gcube.spatial.data.geonetwork.utils.ScopeUtils;
|
import org.gcube.spatial.data.sdi.utils.ScopeUtils;
|
||||||
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.ConfigurationNotFoundException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.ConfigurationNotFoundException;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceDefinitionException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceDefinitionException;
|
||||||
|
@ -236,6 +236,7 @@ public abstract class AbstractISModule implements ISModule {
|
||||||
Profile profile=toCreate.newProfile();
|
Profile profile=toCreate.newProfile();
|
||||||
profile.category(getServiceEndpointCategory());
|
profile.category(getServiceEndpointCategory());
|
||||||
profile.description(definition.getDescription());
|
profile.description(definition.getDescription());
|
||||||
|
profile.name(definition.getName());
|
||||||
Platform platform=profile.newPlatform();
|
Platform platform=profile.newPlatform();
|
||||||
platform.name(getServiceEndpointPlatformName()).
|
platform.name(getServiceEndpointPlatformName()).
|
||||||
version(definition.getMajorVersion()).
|
version(definition.getMajorVersion()).
|
||||||
|
|
|
@ -1,32 +1,20 @@
|
||||||
package org.gcube.spatial.data.sdi.engine.impl.is;
|
package org.gcube.spatial.data.sdi.engine.impl.is;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.gcube.common.resources.gcore.GCoreEndpoint;
|
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint.Profile;
|
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint.Property;
|
import org.gcube.common.resources.gcore.ServiceEndpoint.Property;
|
||||||
import org.gcube.common.resources.gcore.common.Platform;
|
|
||||||
import org.gcube.spatial.data.geonetwork.GeoNetworkAdministration;
|
|
||||||
import org.gcube.spatial.data.geonetwork.configuration.Configuration;
|
|
||||||
import org.gcube.spatial.data.geonetwork.extension.ServerAccess;
|
|
||||||
import org.gcube.spatial.data.geonetwork.model.Account;
|
|
||||||
import org.gcube.spatial.data.geonetwork.model.ScopeConfiguration;
|
|
||||||
import org.gcube.spatial.data.gis.GISInterface;
|
|
||||||
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.ConfigurationNotFoundException;
|
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceDefinitionException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceDefinitionException;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.ServiceRegistrationException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.ServiceRegistrationException;
|
||||||
import org.gcube.spatial.data.sdi.model.credentials.AccessType;
|
import org.gcube.spatial.data.sdi.model.credentials.AccessType;
|
||||||
import org.gcube.spatial.data.sdi.model.credentials.Credentials;
|
import org.gcube.spatial.data.sdi.model.credentials.Credentials;
|
||||||
|
import org.gcube.spatial.data.sdi.model.gn.Account;
|
||||||
import org.gcube.spatial.data.sdi.model.health.Status;
|
import org.gcube.spatial.data.sdi.model.health.Status;
|
||||||
import org.gcube.spatial.data.sdi.model.service.GeoNetworkDescriptor;
|
|
||||||
import org.gcube.spatial.data.sdi.model.service.Version;
|
|
||||||
import org.gcube.spatial.data.sdi.model.services.GeoNetworkServiceDefinition;
|
import org.gcube.spatial.data.sdi.model.services.GeoNetworkServiceDefinition;
|
||||||
import org.gcube.spatial.data.sdi.model.services.ServiceDefinition;
|
import org.gcube.spatial.data.sdi.model.services.ServiceDefinition;
|
||||||
import org.gcube.spatial.data.sdi.model.services.ServiceDefinition.Type;
|
import org.gcube.spatial.data.sdi.model.services.ServiceDefinition.Type;
|
||||||
|
@ -202,7 +190,7 @@ public class GeoNetworkRetriever extends AbstractISModule{
|
||||||
|
|
||||||
AccessPoint point=new AccessPoint();
|
AccessPoint point=new AccessPoint();
|
||||||
point.address("http://"+definition.getHostname()+"/geonetwork");
|
point.address("http://"+definition.getHostname()+"/geonetwork");
|
||||||
point.credentials(definition.getAdminPassword(), "admin");
|
point.credentials(ISUtils.encryptString(definition.getAdminPassword()), "admin");
|
||||||
point.description("Main Access point");
|
point.description("Main Access point");
|
||||||
point.name(getServiceEndpointAccessPointName());
|
point.name(getServiceEndpointAccessPointName());
|
||||||
|
|
||||||
|
@ -212,7 +200,7 @@ public class GeoNetworkRetriever extends AbstractISModule{
|
||||||
point.properties().add(priorityProperty);
|
point.properties().add(priorityProperty);
|
||||||
// Suffixes property
|
// Suffixes property
|
||||||
Property suffixesProperty=new Property();
|
Property suffixesProperty=new Property();
|
||||||
suffixesProperty.nameAndValue("suffixes", " ");
|
suffixesProperty.nameAndValue("suffixes", "");
|
||||||
point.properties().add(suffixesProperty);
|
point.properties().add(suffixesProperty);
|
||||||
|
|
||||||
toReturn.profile().accessPoints().add(point);
|
toReturn.profile().accessPoints().add(point);
|
||||||
|
|
|
@ -4,14 +4,9 @@ import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||||
import org.gcube.spatial.data.gis.is.AbstractGeoServerDescriptor;
|
|
||||||
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceDefinitionException;
|
import org.gcube.spatial.data.sdi.engine.impl.faults.InvalidServiceDefinitionException;
|
||||||
import org.gcube.spatial.data.sdi.model.credentials.AccessType;
|
|
||||||
import org.gcube.spatial.data.sdi.model.credentials.Credentials;
|
|
||||||
import org.gcube.spatial.data.sdi.model.health.Status;
|
import org.gcube.spatial.data.sdi.model.health.Status;
|
||||||
import org.gcube.spatial.data.sdi.model.service.GeoServerDescriptor;
|
|
||||||
import org.gcube.spatial.data.sdi.model.service.Version;
|
|
||||||
import org.gcube.spatial.data.sdi.model.services.GeoServerDefinition;
|
import org.gcube.spatial.data.sdi.model.services.GeoServerDefinition;
|
||||||
import org.gcube.spatial.data.sdi.model.services.ServiceDefinition;
|
import org.gcube.spatial.data.sdi.model.services.ServiceDefinition;
|
||||||
import org.gcube.spatial.data.sdi.model.services.ServiceDefinition.Type;
|
import org.gcube.spatial.data.sdi.model.services.ServiceDefinition.Type;
|
||||||
|
@ -67,16 +62,16 @@ public class GeoServerClusterRetriever extends AbstractISModule{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static final GeoServerDescriptor translate(AbstractGeoServerDescriptor desc){
|
// private static final GeoServerDescriptor translate(AbstractGeoServerDescriptor desc){
|
||||||
Version version=new Version(2,1,2);
|
// Version version=new Version(2,1,2);
|
||||||
String baseEndpoint=desc.getUrl();
|
// String baseEndpoint=desc.getUrl();
|
||||||
List<Credentials> accessibleCredentials=Collections.singletonList(new Credentials(desc.getUser(), desc.getPassword(), AccessType.ADMIN));
|
// List<Credentials> accessibleCredentials=Collections.singletonList(new Credentials(desc.getUser(), desc.getPassword(), AccessType.ADMIN));
|
||||||
String confidentialWorkspace=null;
|
// String confidentialWorkspace=null;
|
||||||
String contextVisibilityWorkspace=null;
|
// String contextVisibilityWorkspace=null;
|
||||||
String sharedWorkspace=null;
|
// String sharedWorkspace=null;
|
||||||
String publicWorkspace=null;
|
// String publicWorkspace=null;
|
||||||
return new GeoServerDescriptor(version, baseEndpoint, accessibleCredentials, confidentialWorkspace, contextVisibilityWorkspace, sharedWorkspace, publicWorkspace);
|
// return new GeoServerDescriptor(version, baseEndpoint, accessibleCredentials, confidentialWorkspace, contextVisibilityWorkspace, sharedWorkspace, publicWorkspace);
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getGCoreEndpointServiceClass() {
|
protected String getGCoreEndpointServiceClass() {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
|
||||||
import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
|
import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
@ -23,7 +24,7 @@ import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
|
||||||
import org.gcube.resources.discovery.client.queries.impl.QueryBox;
|
import org.gcube.resources.discovery.client.queries.impl.QueryBox;
|
||||||
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
import org.gcube.spatial.data.sdi.NetUtils;
|
import org.gcube.spatial.data.sdi.NetUtils;
|
||||||
import org.gcube.spatial.data.sdi.ScopeUtils;
|
import org.gcube.spatial.data.sdi.utils.ScopeUtils;
|
||||||
import org.gcube.vremanagement.resourcemanager.client.RMBinderLibrary;
|
import org.gcube.vremanagement.resourcemanager.client.RMBinderLibrary;
|
||||||
import org.gcube.vremanagement.resourcemanager.client.exceptions.InvalidScopeException;
|
import org.gcube.vremanagement.resourcemanager.client.exceptions.InvalidScopeException;
|
||||||
import org.gcube.vremanagement.resourcemanager.client.exceptions.ResourcesCreationException;
|
import org.gcube.vremanagement.resourcemanager.client.exceptions.ResourcesCreationException;
|
||||||
|
@ -119,6 +120,8 @@ public class ISUtils {
|
||||||
|
|
||||||
public static String registerService(ServiceEndpoint toRegister) {
|
public static String registerService(ServiceEndpoint toRegister) {
|
||||||
RegistryPublisher rp=RegistryPublisherFactory.create();
|
RegistryPublisher rp=RegistryPublisherFactory.create();
|
||||||
|
if(log.isDebugEnabled())
|
||||||
|
Resources.print(toRegister);
|
||||||
Resource r=rp.create(toRegister);
|
Resource r=rp.create(toRegister);
|
||||||
return r.id();
|
return r.id();
|
||||||
}
|
}
|
||||||
|
@ -166,10 +169,24 @@ public class ISUtils {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String encryptString(String toEncrypt){
|
||||||
|
try{
|
||||||
|
return StringEncrypter.getEncrypter().encrypt(toEncrypt);
|
||||||
|
}catch(Exception e) {
|
||||||
|
throw new RuntimeException("Unable to encrypt : "+toEncrypt,e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static ServiceEndpoint update(ServiceEndpoint toUpdate) {
|
public static ServiceEndpoint update(ServiceEndpoint toUpdate) {
|
||||||
RegistryPublisher rp=RegistryPublisherFactory.create();
|
RegistryPublisher rp=RegistryPublisherFactory.create();
|
||||||
return rp.update(toUpdate);
|
try{
|
||||||
|
return rp.update(toUpdate);
|
||||||
|
}catch(RuntimeException t) {
|
||||||
|
log.warn("Unable to update resource {} ",toUpdate.id());
|
||||||
|
log.debug("Updated resource is {} ",marshal(toUpdate));
|
||||||
|
throw t;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ServiceEndpoint updateAndWait(ServiceEndpoint toUpdate) {
|
public static ServiceEndpoint updateAndWait(ServiceEndpoint toUpdate) {
|
||||||
|
@ -185,10 +202,10 @@ public class ISUtils {
|
||||||
try {
|
try {
|
||||||
Thread.sleep(500);
|
Thread.sleep(500);
|
||||||
} catch (InterruptedException e) {}
|
} catch (InterruptedException e) {}
|
||||||
updatedString=queryById(toUpdate.id()).get(0);
|
updatedString=marshal(querySEById(toUpdate.id()));
|
||||||
equals=toUpdateString.equals(updatedString);
|
equals=toUpdateString.equals(updatedString);
|
||||||
timeoutReached=(System.currentTimeMillis()-updateTime)>timeout;
|
timeoutReached=(System.currentTimeMillis()-updateTime)>timeout;
|
||||||
}while(equals&&(!timeoutReached));
|
}while(!equals&&(!timeoutReached));
|
||||||
if(timeoutReached) log.warn("Timeout reached. Check if {} is updated ",toUpdate.id());
|
if(timeoutReached) log.warn("Timeout reached. Check if {} is updated ",toUpdate.id());
|
||||||
return querySEById(toUpdate.id());
|
return querySEById(toUpdate.id());
|
||||||
}
|
}
|
||||||
|
@ -206,7 +223,10 @@ public class ISUtils {
|
||||||
String parent=ScopeUtils.getParentScope(scope);
|
String parent=ScopeUtils.getParentScope(scope);
|
||||||
if (parent!=null)
|
if (parent!=null)
|
||||||
for(String resourceScope:res.scopes().asCollection())
|
for(String resourceScope:res.scopes().asCollection())
|
||||||
if(ScopeUtils.getParentScope(resourceScope).equals(parent)) toReturn.add(resourceScope);
|
if(!resourceScope.equals(scope)) {
|
||||||
|
String resourceScopeParent=ScopeUtils.getParentScope(resourceScope);
|
||||||
|
if((resourceScopeParent!=null)&&(resourceScopeParent.equals(parent))) toReturn.add(resourceScope);
|
||||||
|
}
|
||||||
return toReturn;
|
return toReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ import org.gcube.common.resources.gcore.utils.XPathHelper;
|
||||||
import org.gcube.portlets.user.uriresolvermanager.UriResolverManager;
|
import org.gcube.portlets.user.uriresolvermanager.UriResolverManager;
|
||||||
import org.gcube.portlets.user.uriresolvermanager.exception.IllegalArgumentException;
|
import org.gcube.portlets.user.uriresolvermanager.exception.IllegalArgumentException;
|
||||||
import org.gcube.portlets.user.uriresolvermanager.exception.UriResolverMapException;
|
import org.gcube.portlets.user.uriresolvermanager.exception.UriResolverMapException;
|
||||||
import org.gcube.spatial.data.geonetwork.utils.ScopeUtils;
|
import org.gcube.spatial.data.sdi.utils.ScopeUtils;
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
import org.w3c.dom.NodeList;
|
import org.w3c.dom.NodeList;
|
||||||
|
@ -78,7 +78,7 @@ public class MetadataUtils {
|
||||||
return new String(encoded);
|
return new String(encoded);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getGisLinkByUUID(String uuid) throws UriResolverMapException, IllegalArgumentException{
|
public static String getGisLinkByUUID(String uuid) throws UriResolverMapException, IllegalArgumentException {
|
||||||
Map<String,String> params=new HashMap();
|
Map<String,String> params=new HashMap();
|
||||||
params.put("scope", ScopeUtils.getCurrentScope());
|
params.put("scope", ScopeUtils.getCurrentScope());
|
||||||
params.put("gis-UUID", uuid);
|
params.put("gis-UUID", uuid);
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
package org.gcube.spatial.data.sdi.model.credentials;
|
|
||||||
|
|
||||||
public enum AccessType {
|
|
||||||
|
|
||||||
ADMIN,
|
|
||||||
CONTEXT_MANAGER,
|
|
||||||
CONTEXT_USER,
|
|
||||||
CKAN;
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
package org.gcube.spatial.data.sdi.model.credentials;
|
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.NonNull;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@XmlRootElement
|
|
||||||
@XmlAccessorType(XmlAccessType.FIELD)
|
|
||||||
public class Credentials {
|
|
||||||
|
|
||||||
@NonNull
|
|
||||||
private String username;
|
|
||||||
@NonNull
|
|
||||||
private String password;
|
|
||||||
@NonNull
|
|
||||||
private AccessType accessType;
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "Credentials [username=" + username + ", password=****, accessType=" + accessType + "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -58,8 +58,10 @@ public class GeoNetwork {
|
||||||
return sdi.getGeoNetworkManager().getDescriptorByHostname(host);
|
return sdi.getGeoNetworkManager().getDescriptorByHostname(host);
|
||||||
|
|
||||||
}catch(WebApplicationException e){
|
}catch(WebApplicationException e){
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw e;
|
throw e;
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw new WebApplicationException("Unable to serve request", e);
|
throw new WebApplicationException("Unable to serve request", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,8 +78,10 @@ public class GeoNetwork {
|
||||||
return roleManager.getMostAccessible(sdi.getGeoNetworkManager().getDescriptorByHostname(host).getAccessibleCredentials(), false);
|
return roleManager.getMostAccessible(sdi.getGeoNetworkManager().getDescriptorByHostname(host).getAccessibleCredentials(), false);
|
||||||
// return .get(0);
|
// return .get(0);
|
||||||
}catch(WebApplicationException e){
|
}catch(WebApplicationException e){
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw e;
|
throw e;
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw new WebApplicationException("Unable to serve request", e);
|
throw new WebApplicationException("Unable to serve request", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,8 +93,10 @@ public class GeoNetwork {
|
||||||
try {
|
try {
|
||||||
return sdi.registerService(toRegister);
|
return sdi.registerService(toRegister);
|
||||||
}catch(WebApplicationException e) {
|
}catch(WebApplicationException e) {
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw e;
|
throw e;
|
||||||
}catch(Exception e) {
|
}catch(Exception e) {
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw new WebApplicationException("Unable to serve request",e);
|
throw new WebApplicationException("Unable to serve request",e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,8 +109,10 @@ public class GeoNetwork {
|
||||||
try {
|
try {
|
||||||
return sdi.importService(sourceToken, host, Type.GEONETWORK);
|
return sdi.importService(sourceToken, host, Type.GEONETWORK);
|
||||||
}catch(WebApplicationException e) {
|
}catch(WebApplicationException e) {
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw e;
|
throw e;
|
||||||
}catch(Exception e) {
|
}catch(Exception e) {
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw new WebApplicationException("Unable to serve request",e);
|
throw new WebApplicationException("Unable to serve request",e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,8 +51,10 @@ public class GeoServer {
|
||||||
return sdi.getGeoServerManager().getDescriptorByHostname(host);
|
return sdi.getGeoServerManager().getDescriptorByHostname(host);
|
||||||
|
|
||||||
}catch(WebApplicationException e){
|
}catch(WebApplicationException e){
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw e;
|
throw e;
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw new WebApplicationException("Unable to serve request", e);
|
throw new WebApplicationException("Unable to serve request", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,8 +70,10 @@ public class GeoServer {
|
||||||
host=NetUtils.getHost(host);
|
host=NetUtils.getHost(host);
|
||||||
return sdi.getGeoServerManager().getDescriptorByHostname(host).getAccessibleCredentials().get(0);
|
return sdi.getGeoServerManager().getDescriptorByHostname(host).getAccessibleCredentials().get(0);
|
||||||
}catch(WebApplicationException e){
|
}catch(WebApplicationException e){
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw e;
|
throw e;
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw new WebApplicationException("Unable to serve request", e);
|
throw new WebApplicationException("Unable to serve request", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,8 +85,10 @@ public class GeoServer {
|
||||||
try {
|
try {
|
||||||
return sdi.registerService(toRegister);
|
return sdi.registerService(toRegister);
|
||||||
}catch(WebApplicationException e) {
|
}catch(WebApplicationException e) {
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw e;
|
throw e;
|
||||||
}catch(Exception e) {
|
}catch(Exception e) {
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw new WebApplicationException("Unable to serve request",e);
|
throw new WebApplicationException("Unable to serve request",e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,8 +101,10 @@ public class GeoServer {
|
||||||
try {
|
try {
|
||||||
return sdi.importService(sourceToken, host, Type.GEOSERVER);
|
return sdi.importService(sourceToken, host, Type.GEOSERVER);
|
||||||
}catch(WebApplicationException e) {
|
}catch(WebApplicationException e) {
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw e;
|
throw e;
|
||||||
}catch(Exception e) {
|
}catch(Exception e) {
|
||||||
|
log.warn("Unable to serve request",e);
|
||||||
throw new WebApplicationException("Unable to serve request",e);
|
throw new WebApplicationException("Unable to serve request",e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,10 +137,10 @@ public class Metadata {
|
||||||
toReturn.setPublishedUUID(uuid);
|
toReturn.setPublishedUUID(uuid);
|
||||||
return toReturn;
|
return toReturn;
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
log.debug("Unable to get uploaded with ID {}. Cause : ",uploadedId,e);
|
log.warn("Unable to get uploaded with ID {}. Cause : ",uploadedId,e);
|
||||||
throw new WebApplicationException("Invalid upload id "+uploadedId);
|
throw new WebApplicationException("Invalid upload id "+uploadedId);
|
||||||
}catch(Throwable e ){
|
}catch(Throwable e ){
|
||||||
log.debug("Unexpected error while publishing {} . Cause : ",uploadedId,e);
|
log.warn("Unexpected error while publishing {} . Cause : ",uploadedId,e);
|
||||||
throw new WebApplicationException("Unabel to publish metadata. Cause "+e.getMessage(),Status.INTERNAL_SERVER_ERROR);
|
throw new WebApplicationException("Unabel to publish metadata. Cause "+e.getMessage(),Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,8 @@ import javax.ws.rs.core.MediaType;
|
||||||
import org.gcube.data.transfer.model.plugins.thredds.ThreddsCatalog;
|
import org.gcube.data.transfer.model.plugins.thredds.ThreddsCatalog;
|
||||||
import org.gcube.smartgears.annotations.ManagedBy;
|
import org.gcube.smartgears.annotations.ManagedBy;
|
||||||
import org.gcube.spatial.data.sdi.SDIServiceManager;
|
import org.gcube.spatial.data.sdi.SDIServiceManager;
|
||||||
import org.gcube.spatial.data.sdi.ScopeUtils;
|
|
||||||
import org.gcube.spatial.data.sdi.engine.ThreddsManager;
|
import org.gcube.spatial.data.sdi.engine.ThreddsManager;
|
||||||
|
import org.gcube.spatial.data.sdi.utils.ScopeUtils;
|
||||||
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
@ -70,7 +70,7 @@ public class Thredds {
|
||||||
|
|
||||||
return threddsManager.createCatalogFromTemplate(authority,path,datasetScanId,datasetScanName,folder,catalogReference);
|
return threddsManager.createCatalogFromTemplate(authority,path,datasetScanId,datasetScanName,folder,catalogReference);
|
||||||
}catch(Throwable t) {
|
}catch(Throwable t) {
|
||||||
log.debug("Unable to create catalog",t);
|
log.warn("Unable to create catalog",t);
|
||||||
throw new WebApplicationException("Unable to serve request", t);
|
throw new WebApplicationException("Unable to serve request", t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,8 @@ gn.se.confidential.group.prefix=confidential
|
||||||
gn.se.context.group.prefix=private
|
gn.se.context.group.prefix=private
|
||||||
|
|
||||||
gn.groups.all=1
|
gn.groups.all=1
|
||||||
|
gn.groups.max_length=32
|
||||||
|
|
||||||
|
|
||||||
gn.ge.serviceClass=SDI
|
gn.ge.serviceClass=SDI
|
||||||
gn.ge.serviceName=GeoNetwork
|
gn.ge.serviceName=GeoNetwork
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package org.gcube.spatial.data.sdi.test;
|
package org.gcube.spatial.data.sdi.test;
|
||||||
|
|
||||||
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
|
||||||
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.GISManagerImpl;
|
import org.gcube.spatial.data.sdi.engine.impl.GISManagerImpl;
|
||||||
|
@ -8,19 +10,20 @@ import org.gcube.spatial.data.sdi.engine.impl.GeoNetworkManagerImpl;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.RoleManagerImpl;
|
import org.gcube.spatial.data.sdi.engine.impl.RoleManagerImpl;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.SDIManagerImpl;
|
import org.gcube.spatial.data.sdi.engine.impl.SDIManagerImpl;
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.ThreddsManagerImpl;
|
import org.gcube.spatial.data.sdi.engine.impl.ThreddsManagerImpl;
|
||||||
|
import org.gcube.spatial.data.sdi.test.factories.ThreddsManagerFactory;
|
||||||
|
|
||||||
public class ConfigurationTest {
|
public class ConfigurationTest {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) throws MalformedURLException {
|
||||||
TokenSetter.set("/gcube/devNext");
|
TokenSetter.set("/d4science.research-infrastructures.eu/gCubeApps/BiodiversityLab");
|
||||||
|
|
||||||
URL propertiesURL=ConfigurationTest.class.getResource("/WEB-INF/config.properties");
|
// TokenSetter.set("/gcube/devNext/NextNext");
|
||||||
|
LocalConfiguration.init(Paths.get("src/main/webapp/WEB-INF/config.properties").toUri().toURL());
|
||||||
|
|
||||||
LocalConfiguration.init(propertiesURL);
|
SDIManagerImpl sdi=new SDIManagerImpl(new GeoNetworkManagerImpl(new RoleManagerImpl()), new ThreddsManagerFactory().provide(), new GISManagerImpl());
|
||||||
|
|
||||||
SDIManagerImpl sdi=new SDIManagerImpl(new GeoNetworkManagerImpl(new RoleManagerImpl()), new ThreddsManagerImpl(), new GISManagerImpl());
|
|
||||||
|
|
||||||
System.out.println(sdi.getContextConfiguration());
|
System.out.println(sdi.getContextConfiguration());
|
||||||
|
System.out.println(sdi.getContextConfiguration().getGeonetworkConfiguration().get(0).getAccessibleCredentials());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,12 +16,12 @@ public class MetadataApplicationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void apply() throws IOException, TransformerException{
|
public void apply() throws IOException, TransformerException{
|
||||||
TokenSetter.set("/gcube/devsec/devVRE");
|
TokenSetter.set("/gcube/devNext/NextNext");
|
||||||
MetadataTemplateManagerImpl manager=new MetadataTemplateManagerImpl();
|
MetadataTemplateManagerImpl manager=new MetadataTemplateManagerImpl();
|
||||||
// LocalConfiguration.init(Paths.get("src/main/webapp/WEB-INF/config.properties").toUri().toURL())
|
// LocalConfiguration.init(Paths.get("src/main/webapp/WEB-INF/config.properties").toUri().toURL())
|
||||||
// .setTemplateConfigurationObject(Paths.get("src/main/webapp/WEB-INF/metadataTemplates").toFile());
|
// .setTemplateConfigurationObject(Paths.get("src/main/webapp/WEB-INF/metadataTemplates").toFile());
|
||||||
|
|
||||||
manager.init(Paths.get("src/main/webapp/WEB-INF/metadataTemplates").toFile());
|
manager.init(Paths.get("src/main/webapp/WEB-INF/xmlTemplates").toFile());
|
||||||
|
|
||||||
|
|
||||||
System.out.println(manager.getAvailableMetadataTemplates());
|
System.out.println(manager.getAvailableMetadataTemplates());
|
||||||
|
@ -31,6 +31,9 @@ public class MetadataApplicationTest {
|
||||||
builder.threddsOnlineResources("localhost", "someFileName.sc", "newCatalog");
|
builder.threddsOnlineResources("localhost", "someFileName.sc", "newCatalog");
|
||||||
TemplateApplicationReport report=manager.applyMetadataTemplates(Paths.get("src/test/resources/xml/toEnrichMetadata.xml").toFile(), builder.get());
|
TemplateApplicationReport report=manager.applyMetadataTemplates(Paths.get("src/test/resources/xml/toEnrichMetadata.xml").toFile(), builder.get());
|
||||||
System.out.println(report);
|
System.out.println(report);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
package org.gcube.spatial.data.sdi.test;
|
||||||
|
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
|
import org.gcube.spatial.data.sdi.engine.impl.GISManagerImpl;
|
||||||
|
import org.gcube.spatial.data.sdi.engine.impl.GeoNetworkManagerImpl;
|
||||||
|
import org.gcube.spatial.data.sdi.engine.impl.RoleManagerImpl;
|
||||||
|
import org.gcube.spatial.data.sdi.engine.impl.SDIManagerImpl;
|
||||||
|
import org.gcube.spatial.data.sdi.engine.impl.ThreddsManagerImpl;
|
||||||
|
import org.gcube.spatial.data.sdi.engine.impl.faults.ServiceRegistrationException;
|
||||||
|
import org.gcube.spatial.data.sdi.model.ParameterType;
|
||||||
|
import org.gcube.spatial.data.sdi.model.services.GeoNetworkServiceDefinition;
|
||||||
|
import org.gcube.spatial.data.sdi.test.factories.ThreddsManagerFactory;
|
||||||
|
|
||||||
|
import ch.qos.logback.core.util.SystemInfo;
|
||||||
|
|
||||||
|
public class RegisterServiceTest {
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) throws MalformedURLException, ServiceRegistrationException {
|
||||||
|
TokenSetter.set("/d4science.research-infrastructures.eu/gCubeApps/AlienAndInvasiveSpecies");
|
||||||
|
|
||||||
|
LocalConfiguration.init(Paths.get("src/main/webapp/WEB-INF/config.properties").toUri().toURL());
|
||||||
|
|
||||||
|
SDIManagerImpl sdi=new SDIManagerImpl(new GeoNetworkManagerImpl(new RoleManagerImpl()), new ThreddsManagerFactory().provide(), new GISManagerImpl());
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println(sdi.registerService(getGNDefinition()));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static GeoNetworkServiceDefinition getGNDefinition() {
|
||||||
|
GeoNetworkServiceDefinition def=new GeoNetworkServiceDefinition();
|
||||||
|
def.setAdminPassword("gCube@Gn321_sdi");
|
||||||
|
def.setDescription("GeoNetwork v3 Serving Demo VREs");
|
||||||
|
def.setHostname("geonetwork-spatialdata.d4science.org");
|
||||||
|
def.setMajorVersion((short)3);
|
||||||
|
def.setMinorVersion((short)2);
|
||||||
|
def.setReleaseVersion((short)1);
|
||||||
|
def.setName("GeoNetwork 3 Alien");
|
||||||
|
def.setPriority(10);
|
||||||
|
ParameterType[] params=new ParameterType[] {
|
||||||
|
new ParameterType("suffixes",""),
|
||||||
|
//devNext Manually configured
|
||||||
|
// new ParameterType("scope1","devNext"),
|
||||||
|
// new ParameterType("scopeUser1","devNext_context"),
|
||||||
|
// new ParameterType("scopePwd1","123456"),
|
||||||
|
// new ParameterType("ckanUser1","devNext_ckan"),
|
||||||
|
// new ParameterType("scopePwd1","987456"),
|
||||||
|
// new ParameterType("mngUser1","devNext_manager"),
|
||||||
|
// new ParameterType("mngPwd1","741852"),
|
||||||
|
// new ParameterType("default1","1"),
|
||||||
|
// new ParameterType("public1","1"),
|
||||||
|
// new ParameterType("confidential1","1"),
|
||||||
|
// new ParameterType("private1","1"),
|
||||||
|
//NextNext
|
||||||
|
// new ParameterType("scope2","NextNext"),
|
||||||
|
// new ParameterType("scopeUser2","nextNext_context"),
|
||||||
|
// new ParameterType("scopePwd2","456789"),
|
||||||
|
// new ParameterType("ckanUser2","nextNext_ckan"),
|
||||||
|
// new ParameterType("scopePwd2","123789"),
|
||||||
|
// new ParameterType("mngUser2","nextNext_manager"),
|
||||||
|
// new ParameterType("mngPwd2","963852"),
|
||||||
|
// new ParameterType("default2","1"),
|
||||||
|
// new ParameterType("public2","1"),
|
||||||
|
// new ParameterType("confidential2","1"),
|
||||||
|
// new ParameterType("private2","1"),
|
||||||
|
};
|
||||||
|
def.setProperties(new ArrayList<ParameterType>(Arrays.asList(params)));
|
||||||
|
return def;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
package org.gcube.spatial.data.sdi.test;
|
||||||
|
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
|
||||||
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
|
import org.gcube.spatial.data.sdi.engine.ThreddsManager;
|
||||||
|
import org.gcube.spatial.data.sdi.engine.impl.ThreddsManagerImpl;
|
||||||
|
import org.gcube.spatial.data.sdi.test.factories.ThreddsManagerFactory;
|
||||||
|
|
||||||
|
public class TestCreateCatalog {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws MalformedURLException {
|
||||||
|
// TokenSetter.set("/d4science.research-infrastructures.eu/gCubeApps/BiodiversityLab");
|
||||||
|
|
||||||
|
|
||||||
|
TokenSetter.set("/gcube/devNext");
|
||||||
|
|
||||||
|
|
||||||
|
LocalConfiguration.init(Paths.get("src/main/webapp/WEB-INF/config.properties").toUri().toURL());
|
||||||
|
|
||||||
|
ThreddsManager mng=new ThreddsManagerFactory().provide();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "PUT /sdi-service/gcube/service/Thredds?
|
||||||
|
* name=Thredds+Root+Catalog&
|
||||||
|
* path=public/netcdf/syncfolderfrancesco&
|
||||||
|
* folder=public/netcdf/syncfolderfrancesco HTTP/1.1" 1057 Jersey/2.13 (HttpUrlConnection 1.8.0_131)
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
String baseName="ThreddsRootCatalog";
|
||||||
|
String authority="www.d4science.org";
|
||||||
|
String path="public/netcdf/syncfolderfrancesco";
|
||||||
|
String folder="public/netcdf/Anothersyncfolderfrancesco";
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
@QueryParam(Constants.AUTHORITY_PARAMETER) @DefaultValue("www.d4science.org") String authority,
|
||||||
|
@QueryParam(Constants.BASE_NAME_PARAMETER) String baseName,
|
||||||
|
@QueryParam(Constants.PATH_PARAMETER) String path,
|
||||||
|
@QueryParam(Constants.FOLDER_PARAMETER) String folder)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
String scopeName=ScopeUtils.getCurrentScopeName();
|
||||||
|
|
||||||
|
log.info("Received register catalog request under scope {} ",scopeName);
|
||||||
|
|
||||||
|
if(baseName==null) {
|
||||||
|
log.debug("Base name not provided, using VRE {} ",scopeName);
|
||||||
|
baseName=scopeName+"_VRE";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(folder==null) {
|
||||||
|
log.debug("Folder not provided, using base name {} ",baseName);
|
||||||
|
folder=baseName+"_folder";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(path==null) {
|
||||||
|
log.debug("Path not provided, using baseName {} ",baseName);
|
||||||
|
path=baseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
String datasetScanName=(baseName+" Catalog").replace("_", " ");
|
||||||
|
String datasetScanId=baseName+"_in_"+folder;
|
||||||
|
String catalogReference=(baseName).replaceAll("_", " ");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
mng.createCatalogFromTemplate(authority,path,datasetScanId,datasetScanName,folder,catalogReference);
|
||||||
|
}catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -5,15 +5,21 @@ import java.nio.file.Paths;
|
||||||
|
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||||
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
import org.gcube.spatial.data.sdi.LocalConfiguration;
|
||||||
import org.gcube.spatial.data.sdi.ScopeUtils;
|
|
||||||
import org.gcube.spatial.data.sdi.engine.impl.is.ISUtils;
|
import org.gcube.spatial.data.sdi.engine.impl.is.ISUtils;
|
||||||
|
import org.gcube.spatial.data.sdi.utils.ScopeUtils;
|
||||||
|
|
||||||
public class TestIS {
|
public class TestIS {
|
||||||
|
|
||||||
public static void main(String[] args) throws MalformedURLException {
|
public static void main(String[] args) throws MalformedURLException {
|
||||||
TokenSetter.set("/gcube/devNext");
|
TokenSetter.set("/gcube/devNext/NextNext");
|
||||||
LocalConfiguration.init(Paths.get("src/main/webapp/WEB-INF/config.properties").toUri().toURL());
|
LocalConfiguration.init(Paths.get("src/main/webapp/WEB-INF/config.properties").toUri().toURL());
|
||||||
ServiceEndpoint e=ISUtils.querySEById("c8afa8c0-c781-11e2-8f67-be3b57c971ee");
|
ServiceEndpoint e=ISUtils.querySEById("8e1962e9-05a7-40d4-a56f-574431f4c907");
|
||||||
|
|
||||||
|
e.profile().description(e.profile().description()+"_modified");
|
||||||
|
|
||||||
|
System.out.println("Identity : "+ISUtils.marshal(e).equals(ISUtils.marshal(e)));
|
||||||
|
|
||||||
|
|
||||||
System.out.println(ISUtils.updateAndWait(e));
|
System.out.println(ISUtils.updateAndWait(e));
|
||||||
|
|
||||||
System.out.println("PARENTS");
|
System.out.println("PARENTS");
|
||||||
|
|
|
@ -18,7 +18,7 @@ public class ThreddsManagerFactory implements Factory<ThreddsManager>{
|
||||||
|
|
||||||
|
|
||||||
public ThreddsManagerFactory() {
|
public ThreddsManagerFactory() {
|
||||||
manager=new ThreddsManagerImpl(){
|
manager=new ThreddsManagerImpl(new MetadataTemplateManagerFactory().provide()){
|
||||||
@Override
|
@Override
|
||||||
protected AbstractCluster<ThreddsDescriptor, ThreddsController> getCluster() {
|
protected AbstractCluster<ThreddsDescriptor, ThreddsController> getCluster() {
|
||||||
TokenSetter.set(TestCommon.TEST_SCOPE);
|
TokenSetter.set(TestCommon.TEST_SCOPE);
|
||||||
|
|
Loading…
Reference in New Issue