package org.gcube.portlets.user.geoportaldataviewer; import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.useCaseDescriptors; import java.util.List; import org.bson.Document; import org.gcube.application.geoportal.common.model.document.Project; import org.gcube.application.geoportal.common.model.document.identification.IdentificationReference; import org.gcube.application.geoportal.common.model.rest.QueryRequest; import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor; import org.gcube.application.geoportalcommon.ConvertToDataValueObjectModel; import org.gcube.application.geoportalcommon.ProjectDVBuilder; import org.gcube.application.geoportalcommon.geoportal.GeoportalClientCaller; import org.gcube.application.geoportalcommon.geoportal.ProjectsCaller; import org.gcube.application.geoportalcommon.geoportal.UseCaseDescriptorCaller; import org.gcube.application.geoportalcommon.geoportal.util.GisUtil; import org.gcube.application.geoportalcommon.shared.geoportal.geojson.Crs; import org.gcube.application.geoportalcommon.shared.geoportal.geojson.GeoJSON; import org.gcube.application.geoportalcommon.shared.geoportal.materialization.GCubeSDIViewerLayerDV; import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.PayloadDV; import org.gcube.application.geoportalcommon.shared.geoportal.project.ProjectDV; import org.gcube.application.geoportalcommon.shared.geoportal.project.TemporalReferenceDV; import org.gcube.application.geoportalcommon.shared.geoportal.view.ProjectView; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.portlets.user.geoportaldataviewer.server.Geoportal_JSON_Mapper; import org.gcube.portlets.user.geoportaldataviewer.shared.ProjectEdit; import org.json.JSONObject; import org.junit.Before; import org.junit.Test; /** * The Class GeoportalViewer_Tests. * * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it * * Sep 9, 2022 */ public class GeoportalViewer_Tests { private UseCaseDescriptorCaller clientUCD; private ProjectsCaller clientProjects; // private static String CONTEXT = "/pred4s/preprod/preVRE"; // private static String TOKEN = ""; //preVRE private static String CONTEXT = "/gcube/devsec/devVRE"; private static String TOKEN = ""; // devVRE private static String PROFILE_ID = "profiledConcessioni"; private static String PROJECT_ID = "6372470aa7b910781daaa8bc"; private static String USERNAME = "francesco.mangiacrapa"; /** * Gets the client. * * @return the client */ //@Before public void getClient() { // assumeTrue(GCubeTest.isTestInfrastructureEnabled()); ScopeProvider.instance.set(CONTEXT); SecurityTokenProvider.instance.set(TOKEN); clientUCD = GeoportalClientCaller.useCaseDescriptors(); clientProjects = GeoportalClientCaller.projects(); } // @Test public void getProjectViewForID() { try { ScopeProvider.instance.set(CONTEXT); SecurityTokenProvider.instance.set(TOKEN); Project project = clientProjects.getProjectByID(PROFILE_ID, PROJECT_ID); ProjectDVBuilder projectBuilder = ProjectDVBuilder.newBuilder().fullDocumentMap(true); ProjectDV projectDV = ConvertToDataValueObjectModel.toProjectDV(project, projectBuilder); ScopeProvider.instance.set(CONTEXT); SecurityTokenProvider.instance.set(TOKEN); ProjectView projectView = Geoportal_JSON_Mapper.loadProjectView(projectDV, CONTEXT, USERNAME); Geoportal_JSON_Mapper.prettyPrintProjectView(projectView); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } // @Test public void getLayersForId() { System.out.println("getLayersForId [profileID: " + PROFILE_ID + ", projectID: " + PROJECT_ID + "] called"); List listLayers = null; try { ScopeProvider.instance.set(CONTEXT); SecurityTokenProvider.instance.set(TOKEN); Project project = clientProjects.getProjectByID(PROFILE_ID, PROJECT_ID); String jsonDocument = project.getTheDocument().toJson(); System.out.println("JSON Project is: " + jsonDocument); String materializationParentJSONPath = String.format("%s..%s", Geoportal_JSON_Mapper.JSON_$_POINTER, Geoportal_JSON_Mapper.FILESET); listLayers = Geoportal_JSON_Mapper.readGcubeSDILayersForFileset(materializationParentJSONPath, jsonDocument); listLayers.stream().forEach(s -> System.out.println(s)); } catch (Exception e) { String erroMsg = "Layers are not available for profileID " + PROFILE_ID + " with projectID " + PROJECT_ID; System.out.println(erroMsg); e.printStackTrace(); } } // @Test public void getSpatialReference() { System.out.println("getSpatialReference [profileID: " + PROFILE_ID + ", projectID: " + PROJECT_ID + "] called"); try { ScopeProvider.instance.set(CONTEXT); SecurityTokenProvider.instance.set(TOKEN); Project project = clientProjects.getProjectByID(PROFILE_ID, PROJECT_ID); List itentificationReference = project.getIdentificationReferences(); for (IdentificationReference identificationReference : itentificationReference) { String geoJSON = identificationReference.get("geoJSON").toString(); JSONObject jsonObject = new JSONObject(geoJSON); GeoJSON geoJson = new GeoJSON(); geoJson.setType(jsonObject.getString("type")); geoJson.setBbox(GisUtil.fromJSONArray(jsonObject.getJSONArray("bbox"))); Crs crs = org.gcube.application.geoportal.client.utils.Serialization .convert(jsonObject.getJSONObject("crs").toString(), Crs.class); geoJson.setCrs(crs); geoJson.setGeoJSON(geoJSON); System.out.println(geoJson); } } catch (Exception e) { String erroMsg = "getSpatialReference not available for profileID " + PROFILE_ID + " with projectID " + PROJECT_ID; System.out.println(erroMsg); e.printStackTrace(); } } // @Test public void getImagesForId() { System.out.println("getImagesForId [profileID: " + PROFILE_ID + ", projectID: " + PROJECT_ID + "] called"); List listImages = null; try { ScopeProvider.instance.set(CONTEXT); SecurityTokenProvider.instance.set(TOKEN); Project project = clientProjects.getProjectByID(PROFILE_ID, PROJECT_ID); String jsonDocument = project.getTheDocument().toJson(); System.out.println("JSON Project is: " + jsonDocument); String filesetJSONPath = String.format("%s..%s", Geoportal_JSON_Mapper.JSON_$_POINTER, Geoportal_JSON_Mapper.FILESET); listImages = Geoportal_JSON_Mapper.readImagesForFileset(filesetJSONPath, jsonDocument, true); listImages.stream().forEach(s -> System.out.println("Image: " + s)); } catch (Exception e) { String erroMsg = "Images are not available for profileID " + PROFILE_ID + " with projectID " + PROJECT_ID; System.out.println(erroMsg); e.printStackTrace(); } } // @Test public void testUCDQuery() { QueryRequest request = new QueryRequest(); request.setFilter( Document.parse("{\"" + UseCaseDescriptor.ID + "\" : " + "{\"$eq\" : \"" + PROFILE_ID + "\"}}")); request.setProjection(Document.parse("{\"" + UseCaseDescriptor.NAME + "\" : " + "1}")); try { useCaseDescriptors().build().query(request).forEachRemaining(u -> { try { System.out.println("UCD for id" + u.getId() + " returend name: " + u.getName()); ProjectDV projectDV = new ProjectDV(); projectDV.setId(PROJECT_ID); projectDV.setProfileName(u.getName()); projectDV.setProfileID(u.getId()); System.out.println(projectDV); } catch (Exception e) { System.out.println("Invalid UCD, UCID : " + u.getId()); e.printStackTrace(); } }); } catch (Exception e) { // silent } } // @Test public void testReadProjectEdit() { try { ScopeProvider.instance.set(CONTEXT); SecurityTokenProvider.instance.set(TOKEN); Project theProject = clientProjects.getProjectByID(PROFILE_ID, PROJECT_ID); ProjectDVBuilder projectBuilder = ProjectDVBuilder.newBuilder().fullDocumentMap(true); projectBuilder.relationships(true); ProjectDV theProjectDV = ConvertToDataValueObjectModel.toProjectDV(theProject, projectBuilder); ProjectEdit projectEdit = Geoportal_JSON_Mapper.loadProjectEdit(theProjectDV, CONTEXT, USERNAME); Geoportal_JSON_Mapper.prettyPrintProjectEdit(projectEdit); // ProjectView projectView = Geoportal_JSON_Mapper.loadProjectView(theProjectDV, CONTEXT, USERNAME); // Geoportal_JSON_Mapper.prettyPrintProjectView(projectView); } catch (Exception e) { e.printStackTrace(); } } //@Test public void testTemporalReference() { try { ScopeProvider.instance.set(CONTEXT); SecurityTokenProvider.instance.set(TOKEN); Project theProject = clientProjects.getProjectByID(PROFILE_ID, PROJECT_ID); Document temporalJsonTemplate = GeoportalClientCaller.useCaseDescriptors() .readTemporalDimensionTemplate(theProject.getProfileID()); // String template = "{\"content\": \"$.nome\"," + "\"title\": \"$.nome\"," // + "\"start\" : \"$.dataInizioProgetto\"," + "\"end\" : \"$.dataFineProgetto\"}"; if (temporalJsonTemplate != null) { JSONObject sourceJsonTemplate = new JSONObject(temporalJsonTemplate); JSONObject targetJsonObject = ConvertToDataValueObjectModel.toTimelineJSONModel(theProject, sourceJsonTemplate, theProject.getProfileID(), theProject.getId(), null); TemporalReferenceDV temporalDV = ConvertToDataValueObjectModel.toTemporalReferenceDV(theProject, targetJsonObject); System.out.println(temporalDV); // ProjectView projectView = Geoportal_JSON_Mapper.loadProjectView(theProjectDV, CONTEXT, USERNAME); // Geoportal_JSON_Mapper.prettyPrintProjectView(projectView); } } catch (Exception e) { e.printStackTrace(); } } }