Skip to content

Commit 968baa3

Browse files
committed
Using Neo4j RX functions
1 parent 73ffbea commit 968baa3

7 files changed

Lines changed: 267 additions & 142 deletions

File tree

modules/Neo4jPlugin/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<properties>
1818
<neo4j.driver.version>4.3.4</neo4j.driver.version>
1919
<testcontainers.version>1.17.3</testcontainers.version>
20+
<rxjava.version>2.2.21</rxjava.version>
2021
</properties>
2122

2223
<dependencies>
@@ -25,6 +26,11 @@
2526
<artifactId>neo4j-java-driver</artifactId>
2627
<version>${neo4j.driver.version}</version>
2728
</dependency>
29+
<dependency>
30+
<groupId>io.reactivex.rxjava2</groupId>
31+
<artifactId>rxjava</artifactId>
32+
<version>${rxjava.version}</version>
33+
</dependency>
2834
<dependency>
2935
<groupId>org.gephi</groupId>
3036
<artifactId>io-importer-api</artifactId>

modules/Neo4jPlugin/src/main/java/org/gephi/plugins/neo4j/Neo4jDatabaseImporter.java renamed to modules/Neo4jPlugin/src/main/java/org/gephi/plugins/neo4j/importer/Neo4jDatabaseImporter.java

Lines changed: 142 additions & 115 deletions
Large diffs are not rendered by default.

modules/Neo4jPlugin/src/main/java/org/gephi/plugins/neo4j/Neo4jDatabaseImpoterBuilder.java renamed to modules/Neo4jPlugin/src/main/java/org/gephi/plugins/neo4j/importer/Neo4jDatabaseImpoterBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.gephi.plugins.neo4j;
1+
package org.gephi.plugins.neo4j.importer;
22

33
import org.gephi.io.importer.spi.WizardImporter;
44
import org.gephi.io.importer.spi.WizardImporterBuilder;
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.gephi.plugins.neo4j.ui.Connection">
3+
<grid id="27dc6" layout-manager="GridLayoutManager" row-count="4" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
4+
<margin top="0" left="0" bottom="0" right="0"/>
5+
<constraints>
6+
<xy x="20" y="20" width="500" height="400"/>
7+
</constraints>
8+
<properties/>
9+
<border type="none"/>
10+
<children>
11+
<component id="abae9" class="javax.swing.JTextField" binding="dbUrl">
12+
<constraints>
13+
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
14+
<preferred-size width="150" height="-1"/>
15+
</grid>
16+
</constraints>
17+
<properties/>
18+
</component>
19+
<component id="f4b47" class="javax.swing.JLabel" binding="dbUrlLabel">
20+
<constraints>
21+
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false">
22+
<preferred-size width="122" height="17"/>
23+
</grid>
24+
</constraints>
25+
<properties>
26+
<labelFor value="abae9"/>
27+
<text value="Database Url"/>
28+
</properties>
29+
</component>
30+
<component id="f633a" class="javax.swing.JTextField" binding="dbLogin">
31+
<constraints>
32+
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
33+
<preferred-size width="150" height="-1"/>
34+
</grid>
35+
</constraints>
36+
<properties/>
37+
</component>
38+
<component id="a1b31" class="javax.swing.JPasswordField" binding="dbPassword">
39+
<constraints>
40+
<grid row="2" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
41+
<preferred-size width="150" height="-1"/>
42+
</grid>
43+
</constraints>
44+
<properties/>
45+
</component>
46+
<component id="f9167" class="javax.swing.JLabel" binding="dbLoginLabel">
47+
<constraints>
48+
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false">
49+
<preferred-size width="122" height="17"/>
50+
</grid>
51+
</constraints>
52+
<properties>
53+
<labelFor value="f633a"/>
54+
<text value="Username"/>
55+
</properties>
56+
</component>
57+
<component id="5ff91" class="javax.swing.JLabel" binding="dbPasswordLabel">
58+
<constraints>
59+
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false">
60+
<preferred-size width="122" height="17"/>
61+
</grid>
62+
</constraints>
63+
<properties>
64+
<horizontalTextPosition value="11"/>
65+
<labelFor value="a1b31"/>
66+
<text value="Password"/>
67+
</properties>
68+
</component>
69+
<component id="f795f" class="javax.swing.JButton" binding="submit">
70+
<constraints>
71+
<grid row="3" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
72+
</constraints>
73+
<properties>
74+
<text value="Next"/>
75+
</properties>
76+
</component>
77+
</children>
78+
</grid>
79+
</form>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.gephi.plugins.neo4j.ui;
2+
3+
import javax.swing.*;
4+
5+
public class Connection {
6+
private JTextField dbUrl;
7+
private JLabel dbUrlLabel;
8+
private JTextField dbLogin;
9+
private JPasswordField dbPassword;
10+
private JLabel dbLoginLabel;
11+
private JLabel dbPasswordLabel;
12+
private JButton submit;
13+
}

modules/Neo4jPlugin/src/test/java/org/gephi/plugins/neo4j/test/Neo4jIntegrationTest.java renamed to modules/Neo4jPlugin/src/test/java/org/gephi/plugins/neo4j/AbstractNeo4jIntegrationTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.gephi.plugins.neo4j.test;
1+
package org.gephi.plugins.neo4j;
22

33
import org.junit.AfterClass;
44
import org.junit.BeforeClass;
@@ -11,26 +11,26 @@
1111

1212
import java.util.Scanner;
1313

14-
public class Neo4jIntegrationTest {
14+
public abstract class AbstractNeo4jIntegrationTest {
1515

1616
@ClassRule
1717
public static Neo4jContainer<?> neo4j = new Neo4jContainer("neo4j:4.4");
1818

1919
@BeforeClass
2020
public static void before() {
21-
Neo4jIntegrationTest.neo4j.start();
21+
AbstractNeo4jIntegrationTest.neo4j.start();
2222
}
2323

2424
@AfterClass
2525
public static void after() {
26-
Neo4jIntegrationTest.neo4j.stop();
26+
AbstractNeo4jIntegrationTest.neo4j.stop();
2727
}
2828

2929
/**
3030
* Retrieve the Neo4j driver instance for the running container.
3131
*/
3232
public static Driver getNeo4jDriver() {
33-
return GraphDatabase.driver(Neo4jIntegrationTest.neo4j.getBoltUrl(), AuthTokens.basic("neo4j", Neo4jIntegrationTest.neo4j.getAdminPassword()));
33+
return GraphDatabase.driver(AbstractNeo4jIntegrationTest.neo4j.getBoltUrl(), AuthTokens.basic("neo4j", AbstractNeo4jIntegrationTest.neo4j.getAdminPassword()));
3434
}
3535

3636
/**
@@ -40,12 +40,12 @@ public static void loadFile(String file) {
4040
// init db if needed
4141
if (file != null) {
4242
String query = "";
43-
try (Scanner s = new Scanner(Neo4jIntegrationTest.class.getResourceAsStream(file)).useDelimiter("\\n")) {
43+
try (Scanner s = new Scanner(AbstractNeo4jIntegrationTest.class.getResourceAsStream(file)).useDelimiter("\\n")) {
4444
while (s.hasNext()) {
4545
query += s.next() + "\n";
4646
}
4747
}
48-
Driver driver = Neo4jIntegrationTest.getNeo4jDriver();
48+
Driver driver = AbstractNeo4jIntegrationTest.getNeo4jDriver();
4949
try (Session session = driver.session()) {
5050
session.run(query);
5151
}

modules/Neo4jPlugin/src/test/java/org/gephi/plugins/neo4j/Neo4jDatabaseImporterTest.java renamed to modules/Neo4jPlugin/src/test/java/org/gephi/plugins/neo4j/importer/Neo4JDatabaseImporterTest.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package org.gephi.plugins.neo4j;
1+
package org.gephi.plugins.neo4j.importer;
22

33
import org.gephi.io.importer.impl.ImportContainerImpl;
4-
import org.gephi.plugins.neo4j.test.Neo4jIntegrationTest;
4+
import org.gephi.plugins.neo4j.AbstractNeo4jIntegrationTest;
55
import org.junit.BeforeClass;
66
import org.junit.Test;
77
import org.neo4j.driver.Result;
@@ -11,23 +11,23 @@
1111

1212
import static org.junit.Assert.assertEquals;
1313

14-
public class Neo4jDatabaseImporterTest extends Neo4jIntegrationTest {
14+
public class Neo4JDatabaseImporterTest extends AbstractNeo4jIntegrationTest {
1515

1616
@BeforeClass
1717
public static void before() {
18-
Neo4jDatabaseImporterTest.loadFile("/cypher/movie.cyp");
18+
Neo4JDatabaseImporterTest.loadFile("/cypher/movie.cyp");
1919
}
2020

2121
@Test
2222
public void import_full_database_should_work() {
2323
ImportContainerImpl container = new ImportContainerImpl();
2424

2525
Neo4jDatabaseImporter importer = new Neo4jDatabaseImporter();
26-
importer.setUrl(Neo4jDatabaseImporterTest.neo4j.getBoltUrl());
27-
importer.setPasswd(Neo4jDatabaseImporterTest.neo4j.getAdminPassword());
26+
importer.setUrl(Neo4JDatabaseImporterTest.neo4j.getBoltUrl());
27+
importer.setPasswd(Neo4JDatabaseImporterTest.neo4j.getAdminPassword());
2828
importer.execute(container.getLoader());
2929

30-
try (Session session = Neo4jDatabaseImporterTest.getNeo4jDriver().session()) {
30+
try (Session session = Neo4JDatabaseImporterTest.getNeo4jDriver().session()) {
3131
long nbNodes = session.readTransaction(tx -> {
3232
Result rs = tx.run("MATCH (n) RETURN count(n)");
3333
return rs.next().get(0).asLong();
@@ -47,13 +47,13 @@ public void import_by_node_and_edge_types_should_work() {
4747
ImportContainerImpl container = new ImportContainerImpl();
4848

4949
Neo4jDatabaseImporter importer = new Neo4jDatabaseImporter();
50-
importer.setUrl(Neo4jDatabaseImporterTest.neo4j.getBoltUrl());
51-
importer.setPasswd(Neo4jDatabaseImporterTest.neo4j.getAdminPassword());
50+
importer.setUrl(Neo4JDatabaseImporterTest.neo4j.getBoltUrl());
51+
importer.setPasswd(Neo4JDatabaseImporterTest.neo4j.getAdminPassword());
5252
importer.setLabels(Arrays.asList("Person"));
5353
importer.setRelationshipTypes(Arrays.asList("FOLLOWS"));
5454
importer.execute(container.getLoader());
5555

56-
try (Session session = Neo4jDatabaseImporterTest.getNeo4jDriver().session()) {
56+
try (Session session = Neo4JDatabaseImporterTest.getNeo4jDriver().session()) {
5757
long nbNodes = session.readTransaction(tx -> {
5858
Result rs = tx.run("MATCH (n:Person) RETURN count(n)");
5959
return rs.next().get(0).asLong();
@@ -73,12 +73,12 @@ public void import_by_node_types_should_work() {
7373
ImportContainerImpl container = new ImportContainerImpl();
7474

7575
Neo4jDatabaseImporter importer = new Neo4jDatabaseImporter();
76-
importer.setUrl(Neo4jDatabaseImporterTest.neo4j.getBoltUrl());
77-
importer.setPasswd(Neo4jDatabaseImporterTest.neo4j.getAdminPassword());
76+
importer.setUrl(Neo4JDatabaseImporterTest.neo4j.getBoltUrl());
77+
importer.setPasswd(Neo4JDatabaseImporterTest.neo4j.getAdminPassword());
7878
importer.setLabels(Arrays.asList("Person"));
7979
importer.execute(container.getLoader());
8080

81-
try (Session session = Neo4jDatabaseImporterTest.getNeo4jDriver().session()) {
81+
try (Session session = Neo4JDatabaseImporterTest.getNeo4jDriver().session()) {
8282
long nbNodes = session.readTransaction(tx -> {
8383
Result rs = tx.run("MATCH (n:Person) RETURN count(n)");
8484
return rs.next().get(0).asLong();
@@ -98,12 +98,12 @@ public void import_by_edge_types_should_work() {
9898
ImportContainerImpl container = new ImportContainerImpl();
9999

100100
Neo4jDatabaseImporter importer = new Neo4jDatabaseImporter();
101-
importer.setUrl(Neo4jDatabaseImporterTest.neo4j.getBoltUrl());
102-
importer.setPasswd(Neo4jDatabaseImporterTest.neo4j.getAdminPassword());
101+
importer.setUrl(Neo4JDatabaseImporterTest.neo4j.getBoltUrl());
102+
importer.setPasswd(Neo4JDatabaseImporterTest.neo4j.getAdminPassword());
103103
importer.setRelationshipTypes(Arrays.asList("FOLLOWS"));
104104
importer.execute(container.getLoader());
105105

106-
try (Session session = Neo4jDatabaseImporterTest.getNeo4jDriver().session()) {
106+
try (Session session = Neo4JDatabaseImporterTest.getNeo4jDriver().session()) {
107107
long nbNodes = session.readTransaction(tx -> {
108108
Result rs = tx.run("MATCH (n) RETURN count(n)");
109109
return rs.next().get(0).asLong();
@@ -124,13 +124,13 @@ public void import_by_nodes_and_edge_queries_should_work() {
124124
System.out.println(container.getNodeCount());
125125

126126
Neo4jDatabaseImporter importer = new Neo4jDatabaseImporter();
127-
importer.setUrl(Neo4jDatabaseImporterTest.neo4j.getBoltUrl());
128-
importer.setPasswd(Neo4jDatabaseImporterTest.neo4j.getAdminPassword());
127+
importer.setUrl(Neo4JDatabaseImporterTest.neo4j.getBoltUrl());
128+
importer.setPasswd(Neo4JDatabaseImporterTest.neo4j.getAdminPassword());
129129
importer.setNodeQuery("MATCH (n:Person) RETURN id(n) AS id, n.name AS label");
130130
importer.setEdgeQuery("MATCH (n:Person)-[:ACTED_IN]->(m:Movie)<-[:ACTED_IN]-(m:Person) WHERE id(n) < id(m) RETURN id(n) + '-'+ id(m) AS id, id(n) AS sourceId, id(m) AS targetId, count(m) AS weight");
131131
importer.execute(container.getLoader());
132132

133-
try (Session session = Neo4jDatabaseImporterTest.getNeo4jDriver().session()) {
133+
try (Session session = Neo4JDatabaseImporterTest.getNeo4jDriver().session()) {
134134
long nbNodes = session.readTransaction(tx -> {
135135
Result rs = tx.run("MATCH (n:Person) RETURN count(n)");
136136
return rs.next().get(0).asLong();

0 commit comments

Comments
 (0)