Skip to content
This repository was archived by the owner on Jul 6, 2023. It is now read-only.

Commit 67d0c54

Browse files
committed
adding point datatype.
1 parent aa0c071 commit 67d0c54

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

cypher-shell/src/main/java/org/neo4j/shell/prettyprint/OutputFormatter.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,16 @@
77
import org.neo4j.driver.v1.summary.ResultSummary;
88
import org.neo4j.driver.v1.types.Node;
99
import org.neo4j.driver.v1.types.Path;
10+
import org.neo4j.driver.v1.types.Point;
1011
import org.neo4j.driver.v1.types.Relationship;
1112
import org.neo4j.shell.state.BoltResult;
1213

1314
import javax.annotation.Nonnull;
14-
import java.util.*;
15+
import java.util.Arrays;
16+
import java.util.ArrayList;
17+
import java.util.LinkedHashMap;
18+
import java.util.List;
19+
import java.util.Map;
1520
import java.util.stream.Collectors;
1621

1722
import static java.util.Arrays.asList;
@@ -41,18 +46,41 @@ public interface OutputFormatter {
4146
return relationshipAsString(value.asRelationship());
4247
case PATH:
4348
return pathAsString(value.asPath());
49+
case POINT:
50+
return pointAsString(value.asPoint());
51+
case DURATION:
4452
case ANY:
4553
case BOOLEAN:
54+
case BYTES:
4655
case STRING:
4756
case NUMBER:
4857
case INTEGER:
4958
case FLOAT:
59+
case DATE:
60+
case TIME:
61+
case DATE_TIME:
62+
case LOCAL_TIME:
63+
case LOCAL_DATE_TIME:
5064
case NULL:
5165
default:
5266
return value.toString();
5367
}
5468
}
5569

70+
@Nonnull
71+
default String pointAsString(Point point) {
72+
StringBuilder stringBuilder = new StringBuilder("point({");
73+
stringBuilder.append("srid:" + point.srid() + ",");
74+
stringBuilder.append(" x:" + point.x() + ",");
75+
stringBuilder.append(" y:" + point.y());
76+
Double z = point.z();
77+
if (!Double.isNaN(z)) {
78+
stringBuilder.append(", z:" + z);
79+
}
80+
stringBuilder.append("})");
81+
return stringBuilder.toString();
82+
}
83+
5684
@Nonnull
5785
default String pathAsString(@Nonnull Path path) {
5886
List<String> list = new ArrayList<>(path.length());

cypher-shell/src/test/java/org/neo4j/shell/prettyprint/TableOutputFormatterTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@
44
import org.junit.Test;
55
import org.neo4j.driver.internal.InternalNode;
66
import org.neo4j.driver.internal.InternalPath;
7+
import org.neo4j.driver.internal.InternalPoint2D;
8+
import org.neo4j.driver.internal.InternalPoint3D;
79
import org.neo4j.driver.internal.InternalRecord;
810
import org.neo4j.driver.internal.InternalRelationship;
911
import org.neo4j.driver.internal.value.NodeValue;
1012
import org.neo4j.driver.internal.value.PathValue;
13+
import org.neo4j.driver.internal.value.PointValue;
1114
import org.neo4j.driver.internal.value.RelationshipValue;
1215
import org.neo4j.driver.v1.Record;
1316
import org.neo4j.driver.v1.Statement;
@@ -70,6 +73,27 @@ public void prettyPrintPlanInformation() throws Exception {
7073
});
7174
}
7275

76+
@Test
77+
public void prettyPrintPoint() throws Exception {
78+
// given
79+
StatementResult statementResult = mock(StatementResult.class);
80+
List<String> keys = asList("p1", "p2");
81+
82+
when(statementResult.summary()).thenReturn(mock(ResultSummary.class));
83+
when(statementResult.keys()).thenReturn(keys);
84+
85+
Value point2d = new PointValue(new InternalPoint2D(4326, 42.78, 56.7));
86+
Value point3d = new PointValue(new InternalPoint3D(4326, 1.7, 26.79, 34.23));
87+
Record record = new InternalRecord(keys, new Value[]{point2d, point3d});
88+
89+
// when
90+
String actual = verbosePrinter.format(new BoltResult(asList(record), statementResult));
91+
92+
// then
93+
assertThat(actual, containsString("| point({srid:4326, x:42.78, y:56.7}) |"));
94+
assertThat(actual, containsString("| point({srid:4326, x:1.7, y:26.79, z:34.23}) |"));
95+
}
96+
7397
@Test
7498
public void prettyPrintNode() throws Exception {
7599
// given

0 commit comments

Comments
 (0)