package outputModules.neo4j.importers; import neo4j.batchInserter.Neo4JBatchInserter; import org.neo4j.graphdb.DynamicRelationshipType; import org.neo4j.graphdb.RelationshipType; import ast.ASTNode; import ast.declarations.ClassDefStatement; import databaseNodes.ClassDefDatabaseNode; import databaseNodes.EdgeTypes; import databaseNodes.FileDatabaseNode; public class ClassDefImporter extends ASTNodeImporter { public void addToDatabaseSafe(ASTNode node) { try { ClassDefDatabaseNode classDefNode = new ClassDefDatabaseNode(); classDefNode.initialize(node); addClassDefToDatabase(classDefNode); linkClassDefToFileNode(classDefNode, curFile); } catch (RuntimeException ex) { ex.printStackTrace(); System.err.println("Error adding class to database: " + ((ClassDefStatement) node).name.getEscapedCodeStr()); return; } } private void linkClassDefToFileNode(ClassDefDatabaseNode classDefNode, FileDatabaseNode fileNode) { RelationshipType rel = DynamicRelationshipType .withName(EdgeTypes.IS_FILE_OF); long fileId = fileNode.getId(); long functionId = nodeStore.getIdForObject(classDefNode); Neo4JBatchInserter.addRelationship(fileId, functionId, rel, null); } private void addClassDefToDatabase(ClassDefDatabaseNode classDefNode) { addMainNode(classDefNode); } }