108 lines
5.3 KiB
Java
108 lines
5.3 KiB
Java
package org.gcube.dataanalysis.geo.meta;
|
|
|
|
import it.geosolutions.geonetwork.util.GNPriv;
|
|
import it.geosolutions.geonetwork.util.GNPrivConfiguration;
|
|
import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder;
|
|
import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;
|
|
|
|
import java.util.Date;
|
|
import java.util.EnumSet;
|
|
import java.util.Set;
|
|
|
|
import org.gcube.common.scope.api.ScopeProvider;
|
|
import org.gcube.contentmanagement.lexicalmatcher.utils.AnalysisLogger;
|
|
import org.gcube.spatial.data.geonetwork.GeoNetwork;
|
|
import org.gcube.spatial.data.geonetwork.GeoNetworkPublisher;
|
|
import org.gcube.spatial.data.geonetwork.LoginLevel;
|
|
import org.gcube.spatial.data.geonetwork.configuration.Configuration;
|
|
import org.gcube.spatial.data.geonetwork.iso.GcubeISOMetadata;
|
|
import org.gcube.spatial.data.geonetwork.iso.Thesaurus;
|
|
import org.gcube.spatial.data.geonetwork.model.ScopeConfiguration;
|
|
import org.gcube.spatial.data.gis.GISInterface;
|
|
import org.gcube.spatial.data.gis.model.report.PublishResponse;
|
|
import org.geotoolkit.metadata.iso.extent.DefaultExtent;
|
|
import org.opengis.metadata.citation.PresentationForm;
|
|
import org.opengis.metadata.identification.TopicCategory;
|
|
import org.opengis.metadata.spatial.GeometricObjectType;
|
|
import org.opengis.metadata.spatial.TopologyLevel;
|
|
|
|
public class PolyMapMetadata {
|
|
|
|
private static final String crs = "GEOGCS[\"WGS 84\", DATUM[\"World Geodetic System 1984\", SPHEROID[\"WGS 84\", 6378137.0, 298.257223563, AUTHORITY[\"EPSG\",\"7030\"]]," + "AUTHORITY[\"EPSG\",\"6326\"]], PRIMEM[\"Greenwich\", 0.0, AUTHORITY[\"EPSG\",\"8901\"]], UNIT[\"degree\", 0.017453292519943295]," + "AXIS[\"Geodetic longitude\", EAST], AXIS[\"Geodetic latitude\", NORTH], AUTHORITY[\"EPSG\",\"4326\"]]";
|
|
|
|
public static PublishResponse publishTable(String scope, String tableName, double resolution, String username, String layerName, String defaultStyle, String workspace, String datastore, String purpose, String credits, String keyword, boolean isprivate) throws Exception {
|
|
|
|
GSFeatureTypeEncoder fte = new GSFeatureTypeEncoder();
|
|
fte.setEnabled(true);
|
|
fte.setLatLonBoundingBox(-180.0, -90.0, 180.0, 90.0, crs);
|
|
fte.setName(tableName);
|
|
fte.setNativeCRS(crs);
|
|
GSLayerEncoder le = new GSLayerEncoder();
|
|
le.setDefaultStyle(defaultStyle);
|
|
le.setEnabled(true);
|
|
AnalysisLogger.getLogger().debug("Filling Metadata");
|
|
GcubeISOMetadata meta = fillMeta(resolution, username, layerName, scope, tableName, purpose, credits, keyword);
|
|
AnalysisLogger.getLogger().debug("Getting GIS from scope " + scope);
|
|
GISInterface gis = GISInterface.get();
|
|
Configuration gnConfig = gis.getGeoNetworkReader().getConfiguration();
|
|
AnalysisLogger.getLogger().debug("Using the following GNetwork:" + gnConfig.getGeoNetworkEndpoint());
|
|
LoginLevel level = LoginLevel.SCOPE;
|
|
if (isprivate)
|
|
level = LoginLevel.PRIVATE;
|
|
|
|
// PublishResponse resp = gis.publishDBTable(workspace, datastore, fte, le, meta.getMetadata(), new GNInsertConfiguration(gnConfig.getScopeGroup() + "", "datasets", "_none_", true), LoginLevel.DEFAULT);
|
|
|
|
PublishResponse resp = gis.publishDBTable(workspace, datastore, fte, le, meta.getMetadata(), "datasets", "_none_", level,!isprivate);
|
|
|
|
AnalysisLogger.getLogger().debug(resp);
|
|
AnalysisLogger.getLogger().debug("ID:" + resp.getReturnedMetaId());
|
|
AnalysisLogger.getLogger().debug("Result:" + resp.getMetaOperationResult());
|
|
if (resp.getReturnedMetaId() == 0)
|
|
return null;
|
|
else
|
|
return resp;
|
|
}
|
|
|
|
private static GcubeISOMetadata fillMeta(double resolution, String username, String title, String scope, String tableName, String purpose, String credits, String keyword) throws Exception {
|
|
|
|
/*
|
|
if (scope == null)
|
|
scope = ScopeProvider.instance.get();
|
|
*/
|
|
|
|
AnalysisLogger.getLogger().debug("Setting scope for filling Meta");
|
|
// ScopeProvider.instance.set(scope);
|
|
|
|
AnalysisLogger.getLogger().debug("Fulfilling metadata");
|
|
GcubeISOMetadata meta = new GcubeISOMetadata();
|
|
AnalysisLogger.getLogger().debug("Fulfilling metadata Begin");
|
|
meta.setAbstractField("This metadata has been automatically generated from the Statistical Manager on the basis of a distribution of points and according the resolution of " + resolution + " degrees.");
|
|
meta.setCreationDate(new Date(System.currentTimeMillis()));
|
|
meta.setExtent((DefaultExtent) DefaultExtent.WORLD);
|
|
meta.setGeometricObjectType(GeometricObjectType.SURFACE);
|
|
meta.setPresentationForm(PresentationForm.MAP_DIGITAL);
|
|
meta.setPurpose(purpose);
|
|
meta.setResolution(resolution);
|
|
if (title == null || title.length() == 0)
|
|
meta.setTitle("Distribution");
|
|
else
|
|
meta.setTitle(title);
|
|
|
|
meta.setTopologyLevel(TopologyLevel.GEOMETRY_ONLY);
|
|
meta.setUser(username);
|
|
|
|
meta.addGraphicOverview("http://www.d4science.org/D4ScienceOrg-Social-theme/images/custom/D4ScienceInfrastructure.png");
|
|
meta.addCredits(credits);
|
|
Thesaurus generalThesaurus = meta.getConfig().getThesauri().get("General");
|
|
meta.addKeyword(title, generalThesaurus);
|
|
meta.addKeyword(username, generalThesaurus);
|
|
meta.addKeyword("DataMiner", generalThesaurus);
|
|
meta.addKeyword(keyword, generalThesaurus);
|
|
meta.addKeyword(tableName, generalThesaurus);
|
|
meta.addTopicCategory(TopicCategory.BIOTA);
|
|
AnalysisLogger.getLogger().debug("Fulfilling done");
|
|
return meta;
|
|
}
|
|
|
|
}
|