2017-03-21 18:01:31 +01:00
|
|
|
package org.gcube.spatial.data.sdi.rest;
|
|
|
|
|
|
|
|
import java.util.Collection;
|
|
|
|
|
|
|
|
import javax.inject.Inject;
|
|
|
|
import javax.ws.rs.GET;
|
|
|
|
import javax.ws.rs.Path;
|
|
|
|
import javax.ws.rs.Produces;
|
|
|
|
import javax.ws.rs.WebApplicationException;
|
|
|
|
import javax.ws.rs.core.MediaType;
|
|
|
|
import javax.ws.rs.core.Response.Status;
|
|
|
|
|
|
|
|
import org.gcube.spatial.data.geonetwork.GeoNetworkAdministration;
|
|
|
|
import org.gcube.spatial.data.geonetwork.LoginLevel;
|
|
|
|
import org.gcube.spatial.data.geonetwork.model.Group;
|
|
|
|
import org.gcube.spatial.data.geonetwork.model.ScopeConfiguration;
|
|
|
|
import org.gcube.spatial.data.geonetwork.model.faults.AuthorizationException;
|
|
|
|
import org.gcube.spatial.data.geonetwork.model.faults.MissingConfigurationException;
|
|
|
|
import org.gcube.spatial.data.geonetwork.model.faults.MissingServiceEndpointException;
|
|
|
|
import org.gcube.spatial.data.geonetwork.utils.ScopeUtils;
|
|
|
|
import org.gcube.spatial.data.sdi.Constants;
|
|
|
|
import org.gcube.spatial.data.sdi.engine.GeoNetworkProvider;
|
|
|
|
import org.gcube.spatial.data.sdi.engine.impl.faults.ClientInitializationException;
|
|
|
|
|
2017-03-28 15:20:10 +02:00
|
|
|
import io.swagger.annotations.Api;
|
2017-03-21 18:01:31 +01:00
|
|
|
import it.geosolutions.geonetwork.exception.GNLibException;
|
|
|
|
import it.geosolutions.geonetwork.exception.GNServerException;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
@Path(Constants.GEONETWORK_INTERFACE)
|
2017-03-28 15:20:10 +02:00
|
|
|
@Api(value="GeoNetwork")
|
2017-03-21 18:01:31 +01:00
|
|
|
public class GeoNetwork {
|
|
|
|
|
|
|
|
@Inject
|
|
|
|
GeoNetworkProvider geonetworkProvider;
|
|
|
|
|
|
|
|
|
|
|
|
@GET
|
|
|
|
@Path(Constants.GEONETWORK_CONFIGURATION_PATH)
|
|
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
|
|
public ScopeConfiguration getConfiguration(){
|
|
|
|
try {
|
|
|
|
return geonetworkProvider.getGeoNetwork().getConfiguration().getScopeConfiguration();
|
|
|
|
} catch (MissingConfigurationException | MissingServiceEndpointException e) {
|
|
|
|
log.warn("Unable to get GeoNetwork configuration. Current scope is {} ",ScopeUtils.getCurrentScope(),e);
|
|
|
|
throw new WebApplicationException("Scope is not well configured. Please contact administrator.", e, Status.PRECONDITION_FAILED);
|
|
|
|
} catch (ClientInitializationException e) {
|
|
|
|
log.warn("Unable to get GN Client",e);
|
|
|
|
throw new WebApplicationException("Internal Error. Please contact administrator.", e, Status.INTERNAL_SERVER_ERROR);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@GET
|
|
|
|
@Path(Constants.GEONETWORK_GROUPS_PATH)
|
|
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
|
|
public Collection<Group> getGroups(){
|
|
|
|
try {
|
|
|
|
GeoNetworkAdministration admin=geonetworkProvider.getGeoNetwork();
|
|
|
|
admin.login(LoginLevel.ADMIN);
|
|
|
|
return admin.getGroups();
|
|
|
|
} catch (MissingConfigurationException | MissingServiceEndpointException e) {
|
|
|
|
log.warn("Unable to get GeoNetwork configuration. Current scope is {} ",ScopeUtils.getCurrentScope(),e);
|
|
|
|
throw new WebApplicationException("Scope is not well configured. Please contact administrator.", e, Status.PRECONDITION_FAILED);
|
|
|
|
} catch (AuthorizationException e) {
|
|
|
|
log.warn("Unable to use Admin rights.",e);
|
|
|
|
throw new WebApplicationException("Unable to use Admin rights on GeoNetwork. Please contact administrator.", e, Status.INTERNAL_SERVER_ERROR);
|
|
|
|
} catch (GNLibException e) {
|
|
|
|
log.warn("Internal library exception.",e);
|
|
|
|
throw new WebApplicationException("Internal library exception.", e, Status.INTERNAL_SERVER_ERROR);
|
|
|
|
} catch (GNServerException e) {
|
|
|
|
log.warn("GeoNEtwork service exception.",e);
|
|
|
|
throw new WebApplicationException("GeoNetwork service exception.", e, Status.INTERNAL_SERVER_ERROR);
|
|
|
|
} catch (ClientInitializationException e) {
|
|
|
|
log.warn("Unable to get GN Client",e);
|
|
|
|
throw new WebApplicationException("Internal Error. Please contact administrator.", e, Status.INTERNAL_SERVER_ERROR);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|