From e8a52bcf7ead581b9f6b34bcdd9362d393b75a6f Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Tue, 11 Oct 2022 15:55:24 +0200 Subject: [PATCH] Added getRelationshipChain --- .../geoportal/ProjectsCaller.java | 17 ++++ .../org/gcube/application/Project_Tests.java | 81 +++++++++++++------ 2 files changed, 75 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/gcube/application/geoportalcommon/geoportal/ProjectsCaller.java b/src/main/java/org/gcube/application/geoportalcommon/geoportal/ProjectsCaller.java index afe728d..b23207a 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/geoportal/ProjectsCaller.java +++ b/src/main/java/org/gcube/application/geoportalcommon/geoportal/ProjectsCaller.java @@ -18,6 +18,7 @@ import org.gcube.application.geoportal.common.faults.InvalidRequestException; import org.gcube.application.geoportal.common.model.configuration.Archive; import org.gcube.application.geoportal.common.model.configuration.Configuration; import org.gcube.application.geoportal.common.model.document.Project; +import org.gcube.application.geoportal.common.model.document.relationships.RelationshipNavigationObject; import org.gcube.application.geoportal.common.model.rest.CreateRelationshipRequest; import org.gcube.application.geoportal.common.model.rest.DeleteRelationshipRequest; import org.gcube.application.geoportal.common.model.rest.QueryRequest; @@ -159,6 +160,22 @@ public class ProjectsCaller { return project; } + /** + * Gets the relationship chain. + * + * @param profileID the profile ID + * @param projectID the project ID + * @return the relationship chain + * @throws Exception the exception + */ + public Iterator getRelationshipChain(String profileID, String projectID) + throws Exception { + LOG.info("getRelationshipChain called for profileID: {}, projectID: {}", profileID, projectID); + Projects client = (Projects) getClient(profileID); + return client.getRelationshipChain(profileID, projectID); + + } + /** * Gets the configuration. * diff --git a/src/test/java/org/gcube/application/Project_Tests.java b/src/test/java/org/gcube/application/Project_Tests.java index f654b40..5505133 100644 --- a/src/test/java/org/gcube/application/Project_Tests.java +++ b/src/test/java/org/gcube/application/Project_Tests.java @@ -13,6 +13,7 @@ import java.util.Map; import org.gcube.application.geoportal.common.model.configuration.Configuration; import org.gcube.application.geoportal.common.model.document.Project; import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation; +import org.gcube.application.geoportal.common.model.document.relationships.RelationshipNavigationObject; import org.gcube.application.geoportalcommon.ConvertToDataValueObjectModel; import org.gcube.application.geoportalcommon.ProjectDVBuilder; import org.gcube.application.geoportalcommon.geoportal.GeoportalClientCaller; @@ -43,7 +44,7 @@ public class Project_Tests { // private static String TOKEN = ""; //preVRE private static String CONTEXT = "/gcube/devsec/devVRE"; - private static String TOKEN = "c41a00c0-7897-48d2-a67a-05190d6ce5e6-98187548"; // devVRE + private static String TOKEN = ""; // devVRE private static String PROFILE_ID = "profiledConcessioni"; private static String PROJECT_ID = "632c633155e2947b0278c999"; @@ -55,7 +56,7 @@ public class Project_Tests { client = GeoportalClientCaller.projects(); } - //@Test + // @Test public void getList() throws Exception { List listOfProjects = client.getListForProfileID(PROFILE_ID); @@ -65,17 +66,17 @@ public class Project_Tests { } } - //@Test + // @Test public void getByID() throws Exception { Project project = client.getProjectByID(PROFILE_ID, PROJECT_ID); ProjectDVBuilder projectBuilder = ProjectDVBuilder.newBuilder().fullDocumentMap(true); ProjectDV projectDV = ConvertToDataValueObjectModel.toProjectDV(project, projectBuilder); System.out.println(projectDV); - + LinkedHashMap theMap = projectDV.getTheDocument().getDocumentAsMap(); for (String key : theMap.keySet()) { Object theValue = theMap.get(key); - System.out.println("The key: "+key+" has value: "+theValue); + System.out.println("The key: " + key + " has value: " + theValue); } } @@ -90,8 +91,8 @@ public class Project_Tests { } } - - @Test + + // @Test public void getResultDocumentForID() { try { ProjectsCaller projects = GeoportalClientCaller.projects(); @@ -182,7 +183,7 @@ public class Project_Tests { System.out.println(client.getTotalDocument(PROFILE_ID)); } - //@Test + // @Test public void getListPhases() throws Exception { List idsPhases = client.getIDsPhases(PROFILE_ID); @@ -195,29 +196,63 @@ public class Project_Tests { } - //@Test + @Test + public void getRelationshipsChain() throws Exception { + System.out.println("getRelationshipsChain test"); + + Iterator iterator = client.getRelationshipChain(PROFILE_ID, PROJECT_ID); + + while (iterator.hasNext()) { + RelationshipNavigationObject nav = (RelationshipNavigationObject) iterator.next(); + visitRelationshipsChain(nav); + } + } + + public void visitRelationshipsChain(RelationshipNavigationObject nav) { + + if (nav == null) + return; + + printObject(nav.getTarget()); + + for (RelationshipNavigationObject relationship : nav.getChildren()) { + visitRelationshipsChain(relationship); + } + } + + public void printObject(Project project) { + + System.out.println("Project id: " + project.getId() + ", profile: " + project.getProfileID() + ", doc: " + + project.getTheDocument().toJson()); + } + + // @Test public void deserializeISOJSONObjectAsDate() throws Exception { - + String jsonDate = "{hour=0, minute=0, " + "dayOfYear=259, " + "dayOfWeek=MONDAY, " + "dayOfMonth=16, " + "monthValue=9, " + "year=2019, " + "month=SEPTEMBER, " + "second=0, " + "nano=0, " + "chronology={calendarType=iso8601, id=ISO}" + "}"; try { - /*ObjectMapper objectMapper = new ObjectMapper(); - JavaTimeModule javaTimeModule = new JavaTimeModule(); - javaTimeModule.addDeserializer(LocalDate.class, new MyLocalDateDeserializer()); - javaTimeModule.addSerializer(LocalDate.class, new MyLocalDateSerializer()); - objectMapper.registerModule(javaTimeModule); + /* + * ObjectMapper objectMapper = new ObjectMapper(); JavaTimeModule javaTimeModule + * = new JavaTimeModule(); javaTimeModule.addDeserializer(LocalDate.class, new + * MyLocalDateDeserializer()); javaTimeModule.addSerializer(LocalDate.class, new + * MyLocalDateSerializer()); objectMapper.registerModule(javaTimeModule); + * + * objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + * objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, + * false); objectMapper.configure(SerializationFeature. + * WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false); LocalDate date = + * objectMapper.readerFor(LocalDate.class).readValue(jsonDate); + * System.out.println(date); + */ - objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); - objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); - objectMapper.configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false); - LocalDate date = objectMapper.readerFor(LocalDate.class).readValue(jsonDate); - System.out.println(date);*/ - - //checking if the jsonDate is a LocalDate - //LocalDateTime date = org.gcube.application.geoportal.client.utils.Serialization.read(jsonDate, LocalDateTime.class); + // checking if the jsonDate is a LocalDate + // LocalDateTime date = + // org.gcube.application.geoportal.client.utils.Serialization.read(jsonDate, + // LocalDateTime.class); LocalDate date = org.gcube.application.geoportal.client.utils.Serialization.read(jsonDate, LocalDate.class); System.out.println(date); } catch (IOException e) {