public static void exportDistinctInteractionsByStudy(ExportUtil.Appender writer, GraphDatabaseService graphDatabase, RowWriter rowWriter) throws IOException {
DB db = DBMaker
.newMemoryDirectDB()
.compressionEnable()
.transactionDisable()
.make();
final Map<Fun.Tuple3<Long, String, String>, List<String>> studyOccAggregate = db.createTreeMap("studyOccAggregate").make();
NodeUtil.findStudies(graphDatabase, new StudyNodeListener() {
@Override
public void onStudy(StudyNode aStudy) {
collectDistinctInteractions(aStudy, studyOccAggregate);
}
});
for (Map.Entry<Fun.Tuple3<Long, String, String>, List<String>> distinctInteractions : studyOccAggregate.entrySet()) {
rowWriter.writeRow(
writer,
new StudyNode(graphDatabase.getNodeById(distinctInteractions.getKey().a)),
distinctInteractions.getKey().b,
distinctInteractions.getKey().c,
distinctInteractions.getValue()
);
}
db.close();
}