From 399e7607a7c8aa93d431856b5a224a49b4cb6f23 Mon Sep 17 00:00:00 2001 From: Selim Soufargi Date: Mon, 22 Sep 2025 21:11:09 +0200 Subject: [PATCH 1/5] add remove vertex edge, TODO: tests --- .../org/apache/graphar/info/GraphInfo.java | 65 +++++++++++++++++++ testing | 2 +- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java b/maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java index c67a54280..66bcfcebd 100644 --- a/maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java +++ b/maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java @@ -136,6 +136,41 @@ public Optional addVertexAsNew(VertexInfo vertexInfo) { edgeConcat2EdgeInfo)); } + public Optional removeVertex(VertexInfo vertexInfo) { + + if (vertexInfo == null || !hasVertexInfo(vertexInfo.getType())) { + return Optional.empty(); + } + List newCachedEdgeInfoList = + edgeInfos.stream() + .filter( + currEdge -> + !currEdge.getSrcType().equals(vertexInfo.getType()) + && !currEdge.getDstType().equals(vertexInfo.getType())) + .collect(Collectors.toList()); + + final List newVertexInfoList = + vertexInfos.stream() + .filter( + v -> + !v.getType().equals(vertexInfo.getType()) + && !v.getPrefix().equals(vertexInfo.getPrefix())) + .collect(Collectors.toList()); + + final Map newVertexInfoMap = + vertexType2VertexInfo.entrySet().stream() + .filter(v -> !v.getValue().getType().equals(vertexInfo.getType())) + .collect(Collectors.toUnmodifiableMap(Map.Entry::getKey, Map.Entry::getValue)); + return Optional.of( + new GraphInfo( + name, + newVertexInfoList, + newCachedEdgeInfoList, + baseUri, + version, + newVertexInfoMap, + edgeConcat2EdgeInfo)); + } public Optional addEdgeAsNew(EdgeInfo edgeInfo) { if (edgeInfo == null || hasEdgeInfo( @@ -161,6 +196,36 @@ public Optional addEdgeAsNew(EdgeInfo edgeInfo) { vertexType2VertexInfo, newEdgeConcat2EdgeInfo)); } + + public Optional removeEdge(EdgeInfo edgeInfo) { + if (edgeInfo == null + || hasEdgeInfo(edgeInfo.getSrcType(), edgeInfo.getEdgeType(), edgeInfo.getDstType())) { + return Optional.empty(); + } + final List newEdgeInfos = + edgeInfos.stream() + .filter( + e -> + !(e.getSrcType().equals(edgeInfo.getSrcType()) + && e.getDstType().equals(edgeInfo.getDstType()) + && e.getEdgeType().equals(edgeInfo.getEdgeType()))) + .collect(Collectors.toList()); + + final Map newEdgeConcat2EdgeInfo = + edgeConcat2EdgeInfo.entrySet().stream() + .filter(e -> !e.getKey().equals(edgeInfo.getConcat())) + .filter(e -> !e.getValue().getConcat().equals(edgeInfo.getConcat())) + .collect(Collectors.toUnmodifiableMap(Map.Entry::getKey, Map.Entry::getValue)); + return Optional.of( + new GraphInfo( + name, + vertexInfos, + newEdgeInfos, + baseUri, + version, + vertexType2VertexInfo, + newEdgeConcat2EdgeInfo)); + } public boolean hasVertexInfo(String type) { return vertexType2VertexInfo.containsKey(type); diff --git a/testing b/testing index 8286724cd..955596c32 160000 --- a/testing +++ b/testing @@ -1 +1 @@ -Subproject commit 8286724cd898047de833f0304dbddd2831afdf9f +Subproject commit 955596c325ceba7b607e285738e3dd0ce4ff424e From cda351ef5a779e32428fe3554ea03f6acb1fa099 Mon Sep 17 00:00:00 2001 From: Selim Soufargi Date: Mon, 22 Sep 2025 21:20:46 +0200 Subject: [PATCH 2/5] reformat only GraphInfo class, TODO: tests --- .../org/apache/graphar/info/GraphInfo.java | 133 +++++++++--------- 1 file changed, 70 insertions(+), 63 deletions(-) diff --git a/maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java b/maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java index 66bcfcebd..bba6c9281 100644 --- a/maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java +++ b/maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java @@ -136,41 +136,45 @@ public Optional addVertexAsNew(VertexInfo vertexInfo) { edgeConcat2EdgeInfo)); } - public Optional removeVertex(VertexInfo vertexInfo) { - - if (vertexInfo == null || !hasVertexInfo(vertexInfo.getType())) { - return Optional.empty(); - } - List newCachedEdgeInfoList = - edgeInfos.stream() - .filter( - currEdge -> - !currEdge.getSrcType().equals(vertexInfo.getType()) - && !currEdge.getDstType().equals(vertexInfo.getType())) - .collect(Collectors.toList()); - - final List newVertexInfoList = - vertexInfos.stream() - .filter( - v -> - !v.getType().equals(vertexInfo.getType()) - && !v.getPrefix().equals(vertexInfo.getPrefix())) - .collect(Collectors.toList()); - - final Map newVertexInfoMap = - vertexType2VertexInfo.entrySet().stream() - .filter(v -> !v.getValue().getType().equals(vertexInfo.getType())) - .collect(Collectors.toUnmodifiableMap(Map.Entry::getKey, Map.Entry::getValue)); - return Optional.of( - new GraphInfo( - name, - newVertexInfoList, - newCachedEdgeInfoList, - baseUri, - version, - newVertexInfoMap, - edgeConcat2EdgeInfo)); + public Optional removeVertex(VertexInfo vertexInfo) { + + if (vertexInfo == null || !hasVertexInfo(vertexInfo.getType())) { + return Optional.empty(); + } + List newCachedEdgeInfoList = + edgeInfos.stream() + .filter( + currEdge -> + !currEdge.getSrcType().equals(vertexInfo.getType()) + && !currEdge.getDstType() + .equals(vertexInfo.getType())) + .collect(Collectors.toList()); + + final List newVertexInfoList = + vertexInfos.stream() + .filter( + v -> + !v.getType().equals(vertexInfo.getType()) + && !v.getPrefix().equals(vertexInfo.getPrefix())) + .collect(Collectors.toList()); + + final Map newVertexInfoMap = + vertexType2VertexInfo.entrySet().stream() + .filter(v -> !v.getValue().getType().equals(vertexInfo.getType())) + .collect( + Collectors.toUnmodifiableMap( + Map.Entry::getKey, Map.Entry::getValue)); + return Optional.of( + new GraphInfo( + name, + newVertexInfoList, + newCachedEdgeInfoList, + baseUri, + version, + newVertexInfoMap, + edgeConcat2EdgeInfo)); } + public Optional addEdgeAsNew(EdgeInfo edgeInfo) { if (edgeInfo == null || hasEdgeInfo( @@ -196,35 +200,38 @@ public Optional addEdgeAsNew(EdgeInfo edgeInfo) { vertexType2VertexInfo, newEdgeConcat2EdgeInfo)); } - - public Optional removeEdge(EdgeInfo edgeInfo) { - if (edgeInfo == null - || hasEdgeInfo(edgeInfo.getSrcType(), edgeInfo.getEdgeType(), edgeInfo.getDstType())) { - return Optional.empty(); - } - final List newEdgeInfos = - edgeInfos.stream() - .filter( - e -> - !(e.getSrcType().equals(edgeInfo.getSrcType()) - && e.getDstType().equals(edgeInfo.getDstType()) - && e.getEdgeType().equals(edgeInfo.getEdgeType()))) - .collect(Collectors.toList()); - - final Map newEdgeConcat2EdgeInfo = - edgeConcat2EdgeInfo.entrySet().stream() - .filter(e -> !e.getKey().equals(edgeInfo.getConcat())) - .filter(e -> !e.getValue().getConcat().equals(edgeInfo.getConcat())) - .collect(Collectors.toUnmodifiableMap(Map.Entry::getKey, Map.Entry::getValue)); - return Optional.of( - new GraphInfo( - name, - vertexInfos, - newEdgeInfos, - baseUri, - version, - vertexType2VertexInfo, - newEdgeConcat2EdgeInfo)); + + public Optional removeEdge(EdgeInfo edgeInfo) { + if (edgeInfo == null + || hasEdgeInfo( + edgeInfo.getSrcType(), edgeInfo.getEdgeType(), edgeInfo.getDstType())) { + return Optional.empty(); + } + final List newEdgeInfos = + edgeInfos.stream() + .filter( + e -> + !(e.getSrcType().equals(edgeInfo.getSrcType()) + && e.getDstType().equals(edgeInfo.getDstType()) + && e.getEdgeType().equals(edgeInfo.getEdgeType()))) + .collect(Collectors.toList()); + + final Map newEdgeConcat2EdgeInfo = + edgeConcat2EdgeInfo.entrySet().stream() + .filter(e -> !e.getKey().equals(edgeInfo.getConcat())) + .filter(e -> !e.getValue().getConcat().equals(edgeInfo.getConcat())) + .collect( + Collectors.toUnmodifiableMap( + Map.Entry::getKey, Map.Entry::getValue)); + return Optional.of( + new GraphInfo( + name, + vertexInfos, + newEdgeInfos, + baseUri, + version, + vertexType2VertexInfo, + newEdgeConcat2EdgeInfo)); } public boolean hasVertexInfo(String type) { From 22923dce36c99f42d5e1083e7d8fc78db0a12be1 Mon Sep 17 00:00:00 2001 From: Selim Soufargi Date: Thu, 9 Oct 2025 20:19:29 +0200 Subject: [PATCH 3/5] added basic tests for add and remove vertex --- .../test/java/org/apache/graphar/info/GraphInfoTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java index b4ade7188..973500d1a 100644 --- a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java +++ b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java @@ -109,6 +109,15 @@ public void testGraphInfoBasics() { illegalArgumentException.getMessage()); // test version gar/v1 Assert.assertEquals(1, graphInfo.getVersion().getVersion()); + //basic tests for addVertex and removeVertex (more advanced ones should include adjancency list checks) + VertexInfo testingVertexInfo = + new VertexInfo("", 100, Arrays.asList(TestUtil.pg1), "vertex/person/", "gar/v1"); + GraphInfo testingGraphInfo = new GraphInfo("graphTest", new ArrayList<>(),new ArrayList<>(),"",""); + // add the created vertex on an empty graph + Assert.assertEquals(1, testingGraphInfo.addVertexAsNew(testingVertexInfo).get().getVertexInfos().size()); + // remove the newly created vertex and check again the emptied graph + Assert.assertEquals(true, testingGraphInfo.removeVertex(testingVertexInfo).isEmpty()); + // TODO (same tests as vertices for edges) } @Test From 7d5adf1a445e669e038cc64800026df80f7aec2b Mon Sep 17 00:00:00 2001 From: Selim Soufargi Date: Thu, 9 Oct 2025 20:26:02 +0200 Subject: [PATCH 4/5] format graphInfoTests --- maven-projects/info/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/maven-projects/info/pom.xml b/maven-projects/info/pom.xml index ebd5d017d..19489d3a9 100644 --- a/maven-projects/info/pom.xml +++ b/maven-projects/info/pom.xml @@ -92,6 +92,11 @@ ${spotless-maven-plugin.version} + 1.7 From 03c7c42e0761684468d6fc1a529c72e2a9682582 Mon Sep 17 00:00:00 2001 From: Selim Soufargi Date: Thu, 9 Oct 2025 20:27:18 +0200 Subject: [PATCH 5/5] format graphInfoTests --- maven-projects/info/pom.xml | 2 +- .../java/org/apache/graphar/info/GraphInfoTest.java | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/maven-projects/info/pom.xml b/maven-projects/info/pom.xml index 19489d3a9..e5010da6f 100644 --- a/maven-projects/info/pom.xml +++ b/maven-projects/info/pom.xml @@ -94,7 +94,7 @@ diff --git a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java index 973500d1a..d4ad0ffc7 100644 --- a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java +++ b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java @@ -109,12 +109,16 @@ public void testGraphInfoBasics() { illegalArgumentException.getMessage()); // test version gar/v1 Assert.assertEquals(1, graphInfo.getVersion().getVersion()); - //basic tests for addVertex and removeVertex (more advanced ones should include adjancency list checks) + // basic tests for addVertex and removeVertex (more advanced ones should include adjancency + // list checks) VertexInfo testingVertexInfo = new VertexInfo("", 100, Arrays.asList(TestUtil.pg1), "vertex/person/", "gar/v1"); - GraphInfo testingGraphInfo = new GraphInfo("graphTest", new ArrayList<>(),new ArrayList<>(),"",""); + GraphInfo testingGraphInfo = + new GraphInfo("graphTest", new ArrayList<>(), new ArrayList<>(), "", ""); // add the created vertex on an empty graph - Assert.assertEquals(1, testingGraphInfo.addVertexAsNew(testingVertexInfo).get().getVertexInfos().size()); + Assert.assertEquals( + 1, + testingGraphInfo.addVertexAsNew(testingVertexInfo).get().getVertexInfos().size()); // remove the newly created vertex and check again the emptied graph Assert.assertEquals(true, testingGraphInfo.removeVertex(testingVertexInfo).isEmpty()); // TODO (same tests as vertices for edges)