package outputModules.neo4j.importers;
import java.util.Iterator;
import java.util.List;
import neo4j.batchInserter.Neo4JBatchInserter;
import org.neo4j.graphdb.DynamicRelationshipType;
import org.neo4j.graphdb.RelationshipType;
import ast.ASTNode;
import ast.statements.IdentifierDeclStatement;
import databaseNodes.DeclStmtDatabaseNode;
import databaseNodes.EdgeTypes;
public class DeclStmtImporter extends ASTNodeImporter
{
DeclImporter declImporter = new DeclImporter();
public void addToDatabaseSafe(ASTNode node)
{
DeclStmtDatabaseNode dbNode = new DeclStmtDatabaseNode();
dbNode.initialize(node);
addMainNode(dbNode);
addDeclarations(node);
}
private void addDeclarations(ASTNode node)
{
IdentifierDeclStatement stmt = (IdentifierDeclStatement) node;
List<ASTNode> identifierDeclList = stmt.getIdentifierDeclList();
Iterator<ASTNode> it = identifierDeclList.iterator();
while (it.hasNext())
{
ASTNode decl = it.next();
declImporter.addToDatabaseSafe(decl);
long declId = declImporter.getMainNodeId();
addLinkFromStmtToDecl(mainNodeId, declId);
}
}
private void addLinkFromStmtToDecl(long mainNodeId, long declId)
{
RelationshipType rel = DynamicRelationshipType
.withName(EdgeTypes.DECLARES);
Neo4JBatchInserter.addRelationship(mainNodeId, declId, rel, null);
}
}