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

Commit c75886c

Browse files
committed
push more code into the base SimilarityExporter class
1 parent 35cbc2b commit c75886c

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
@@ -18,15 +18,20 @@
1818
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1919
*/
2020

21+
import org.neo4j.graphalgo.core.utils.ExceptionUtil;
2122
import org.neo4j.graphalgo.core.utils.StatementApi;
2223
import org.neo4j.internal.kernel.api.exceptions.EntityNotFoundException;
2324
import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException;
25+
import org.neo4j.internal.kernel.api.exceptions.KernelException;
2426
import org.neo4j.internal.kernel.api.exceptions.explicitindex.AutoIndexingKernelException;
2527
import org.neo4j.kernel.api.KernelTransaction;
2628
import org.neo4j.kernel.internal.GraphDatabaseAPI;
2729
import org.neo4j.logging.Log;
2830
import org.neo4j.values.storable.Values;
2931

32+
import java.util.ArrayList;
33+
import java.util.Iterator;
34+
import java.util.List;
3035
import java.util.stream.Stream;
3136

3237
public abstract class SimilarityExporter extends StatementApi {
@@ -62,5 +67,60 @@ protected void createRelationship(SimilarityResult similarityResult, KernelTrans
6267
relationshipId, propertyId, Values.doubleValue(similarityResult.similarity));
6368
}
6469

70+
private void export(SimilarityResult similarityResult) {
71+
applyInTransaction(statement -> {
72+
try {
73+
createRelationship(similarityResult, statement);
74+
} catch (KernelException e) {
75+
ExceptionUtil.throwKernelException(e);
76+
}
77+
return null;
78+
});
79+
80+
}
81+
82+
private void export(List<SimilarityResult> similarityResults) {
83+
applyInTransaction(statement -> {
84+
for (SimilarityResult similarityResult : similarityResults) {
85+
try {
86+
createRelationship(similarityResult, statement);
87+
} catch (KernelException e) {
88+
ExceptionUtil.throwKernelException(e);
89+
}
90+
}
91+
return null;
92+
});
93+
94+
}
95+
96+
int writeSequential(Stream<SimilarityResult> similarityPairs, long batchSize) {
97+
int[] counter = {0};
98+
if (batchSize == 1) {
99+
similarityPairs.forEach(similarityResult -> {
100+
export(similarityResult);
101+
counter[0]++;
102+
});
103+
} else {
104+
Iterator<SimilarityResult> iterator = similarityPairs.iterator();
105+
do {
106+
List<SimilarityResult> batch = take(iterator, Math.toIntExact(batchSize));
107+
export(batch);
108+
if (batch.size() > 0) {
109+
counter[0]++;
110+
}
111+
} while (iterator.hasNext());
112+
}
113+
114+
return counter[0];
115+
}
116+
117+
private static List<SimilarityResult> take(Iterator<SimilarityResult> iterator, int batchSize) {
118+
List<SimilarityResult> result = new ArrayList<>(batchSize);
119+
while (iterator.hasNext() && batchSize-- > 0) {
120+
result.add(iterator.next());
121+
}
122+
return result;
123+
}
124+
65125
abstract int export(Stream<SimilarityResult> similarityPairs, long batchSize);
66126
}

0 commit comments

Comments
 (0)