package es.uniovi.reflection.patternmining.dao;

import java.sql.SQLException;

import es.uniovi.reflection.patternmining.features.ExpressionFeatures;
import es.uniovi.reflection.patternmining.features.FieldFeatures;
import es.uniovi.reflection.patternmining.features.FileFeatures;
import es.uniovi.reflection.patternmining.features.MethodFeatures;
import es.uniovi.reflection.patternmining.features.ProgramFeatures;
import es.uniovi.reflection.patternmining.features.StatementFeatures;
import es.uniovi.reflection.patternmining.features.TypeDefFeatures;
import es.uniovi.reflection.patternmining.features.TypeFeatures;

public interface ASTNodesInsertion {
	long getNextNodeId();
	long getNextFileId();
	long getNextProgramId();
	void insertProgram(ProgramFeatures programFeatures) throws Exception;
	long insertFile(FileFeatures fileFeatures) throws Exception;
	void insertTypeDefinition(TypeDefFeatures typeDefFeatures) throws Exception;
	void insertFieldDefinition(FieldFeatures fieldFeatures) throws Exception;
	void insertStatement(StatementFeatures statement) throws Exception;
	void insertExpression(ExpressionFeatures expressionFeatures) throws Exception;
	void disconnect() throws SQLException;
	void insertMethodDefinition(MethodFeatures methodFeatures) throws Exception;
	void insertType(TypeFeatures typeFeatures) throws Exception;
}
