Skip to content
This repository was archived by the owner on Apr 22, 2020. It is now read-only.

Commit dab340c

Browse files
committed
push more code into the base SimilarityExporter class
1 parent 334307a commit dab340c

File tree

3 files changed

+60
-110
lines changed

3 files changed

+60
-110
lines changed

algo/src/main/java/org/neo4j/graphalgo/similarity/ParallelSimilarityExporter.java

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -154,60 +154,7 @@ private DisjointSetStruct computePartitions(HeavyGraph graph) {
154154
return struct;
155155
}
156156

157-
private void export(SimilarityResult similarityResult) {
158-
applyInTransaction(statement -> {
159-
try {
160-
createRelationship(similarityResult, statement);
161-
} catch (KernelException e) {
162-
ExceptionUtil.throwKernelException(e);
163-
}
164-
return null;
165-
});
166-
167-
}
168157

169-
private void export(List<SimilarityResult> similarityResults) {
170-
applyInTransaction(statement -> {
171-
for (SimilarityResult similarityResult : similarityResults) {
172-
try {
173-
createRelationship(similarityResult, statement);
174-
} catch (KernelException e) {
175-
ExceptionUtil.throwKernelException(e);
176-
}
177-
}
178-
return null;
179-
});
180-
181-
}
182-
183-
private int writeSequential(Stream<SimilarityResult> similarityPairs, long batchSize) {
184-
int[] counter = {0};
185-
if (batchSize == 1) {
186-
similarityPairs.forEach(similarityResult -> {
187-
export(similarityResult);
188-
counter[0]++;
189-
});
190-
} else {
191-
Iterator<SimilarityResult> iterator = similarityPairs.iterator();
192-
do {
193-
List<SimilarityResult> batch = take(iterator, Math.toIntExact(batchSize));
194-
export(batch);
195-
if (batch.size() > 0) {
196-
counter[0]++;
197-
}
198-
} while (iterator.hasNext());
199-
}
200-
201-
return counter[0];
202-
}
203-
204-
private static List<SimilarityResult> take(Iterator<SimilarityResult> iterator, int batchSize) {
205-
List<SimilarityResult> result = new ArrayList<>(batchSize);
206-
while (iterator.hasNext() && batchSize-- > 0) {
207-
result.add(iterator.next());
208-
}
209-
return result;
210-
}
211158

212159

213160
}

algo/src/main/java/org/neo4j/graphalgo/similarity/SequentialSimilarityExporter.java

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -49,62 +49,5 @@ public int export(Stream<SimilarityResult> similarityPairs, long batchSize) {
4949
return batches;
5050
}
5151

52-
private void export(SimilarityResult similarityResult) {
53-
applyInTransaction(statement -> {
54-
try {
55-
createRelationship(similarityResult, statement);
56-
} catch (KernelException e) {
57-
ExceptionUtil.throwKernelException(e);
58-
}
59-
return null;
60-
});
61-
62-
}
63-
64-
private void export(List<SimilarityResult> similarityResults) {
65-
applyInTransaction(statement -> {
66-
for (SimilarityResult similarityResult : similarityResults) {
67-
try {
68-
createRelationship(similarityResult, statement);
69-
} catch (KernelException e) {
70-
ExceptionUtil.throwKernelException(e);
71-
}
72-
}
73-
return null;
74-
});
75-
76-
}
77-
78-
private int writeSequential(Stream<SimilarityResult> similarityPairs, long batchSize) {
79-
log.info("SequentialSimilarityExporter: Writing relationships...");
80-
int[] counter = {0};
81-
if (batchSize == 1) {
82-
similarityPairs.forEach(similarityResult -> {
83-
export(similarityResult);
84-
counter[0]++;
85-
});
86-
} else {
87-
Iterator<SimilarityResult> iterator = similarityPairs.iterator();
88-
do {
89-
List<SimilarityResult> batch = take(iterator, Math.toIntExact(batchSize));
90-
export(batch);
91-
if(batch.size() > 0) {
92-
counter[0]++;
93-
}
94-
} while (iterator.hasNext());
95-
}
96-
97-
return counter[0];
98-
}
99-
100-
101-
private static List<SimilarityResult> take(Iterator<SimilarityResult> iterator, int batchSize) {
102-
List<SimilarityResult> result = new ArrayList<>(batchSize);
103-
while (iterator.hasNext() && batchSize-- > 0) {
104-
result.add(iterator.next());
105-
}
106-
return result;
107-
}
108-
10952

11053
}

algo/src/main/java/org/neo4j/graphalgo/similarity/SimilarityExporter.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
package org.neo4j.graphalgo.similarity;
22

3+
import org.neo4j.graphalgo.core.utils.ExceptionUtil;
34
import org.neo4j.graphalgo.core.utils.StatementApi;
45
import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException;
56
import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException;
7+
import org.neo4j.internal.kernel.api.exceptions.KernelException;
68
import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException;
79
import org.neo4j.kernel.api.KernelTransaction;
810
import org.neo4j.kernel.internal.GraphDatabaseAPI;
911
import org.neo4j.logging.Log;
1012
import org.neo4j.values.storable.Values;
1113

14+
import java.util.ArrayList;
15+
import java.util.Iterator;
16+
import java.util.List;
1217
import java.util.stream.Stream;
1318

1419
public abstract class SimilarityExporter extends StatementApi {
@@ -44,5 +49,60 @@ protected void createRelationship(SimilarityResult similarityResult, KernelTrans
4449
relationshipId, propertyId, Values.doubleValue(similarityResult.similarity));
4550
}
4651

52+
private void export(SimilarityResult similarityResult) {
53+
applyInTransaction(statement -> {
54+
try {
55+
createRelationship(similarityResult, statement);
56+
} catch (KernelException e) {
57+
ExceptionUtil.throwKernelException(e);
58+
}
59+
return null;
60+
});
61+
62+
}
63+
64+
private void export(List<SimilarityResult> similarityResults) {
65+
applyInTransaction(statement -> {
66+
for (SimilarityResult similarityResult : similarityResults) {
67+
try {
68+
createRelationship(similarityResult, statement);
69+
} catch (KernelException e) {
70+
ExceptionUtil.throwKernelException(e);
71+
}
72+
}
73+
return null;
74+
});
75+
76+
}
77+
78+
int writeSequential(Stream<SimilarityResult> similarityPairs, long batchSize) {
79+
int[] counter = {0};
80+
if (batchSize == 1) {
81+
similarityPairs.forEach(similarityResult -> {
82+
export(similarityResult);
83+
counter[0]++;
84+
});
85+
} else {
86+
Iterator<SimilarityResult> iterator = similarityPairs.iterator();
87+
do {
88+
List<SimilarityResult> batch = take(iterator, Math.toIntExact(batchSize));
89+
export(batch);
90+
if (batch.size() > 0) {
91+
counter[0]++;
92+
}
93+
} while (iterator.hasNext());
94+
}
95+
96+
return counter[0];
97+
}
98+
99+
private static List<SimilarityResult> take(Iterator<SimilarityResult> iterator, int batchSize) {
100+
List<SimilarityResult> result = new ArrayList<>(batchSize);
101+
while (iterator.hasNext() && batchSize-- > 0) {
102+
result.add(iterator.next());
103+
}
104+
return result;
105+
}
106+
47107
abstract int export(Stream<SimilarityResult> similarityPairs, long batchSize);
48108
}

0 commit comments

Comments
 (0)