package es.uniovi.reflection.patternmining.features;

import es.uniovi.reflection.patternmining.category.StatementCategory;
import es.uniovi.reflection.patternmining.category.StatementRole;
import es.uniovi.reflection.patternmining.model.interfaces.StatementChild;
import es.uniovi.reflection.patternmining.model.interfaces.StatementParent;

public class StatementFeatures {

	private long id;
	private long parentId; //information from parent
	private StatementCategory statementCategory;
	private StatementChild firstChild = StatementCategory.None;
	private StatementChild secondChild = StatementCategory.None;
	private StatementChild thirdChild = StatementCategory.None;
	private StatementParent parentNode = StatementCategory.None; //information from parent
	private StatementRole parentChild = StatementRole.None; //information from parent
	private int height;
	private int depth;
	private int parameterizedType;
	private String packageName;
	private boolean isParameterType;
	private long firstChildId;
	private long secondChildId;
	private long thirdChildId;
	private String sourceCode;
	
	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public long getParentId() {
		return parentId;
	}
	public void setParentId(long parentId) {
		this.parentId = parentId;
	}

	public StatementCategory getStatementCategory() {
		return statementCategory;
	}

	public void setStatementCategory(StatementCategory statementCategory) {
		this.statementCategory = statementCategory;
	}

	public StatementChild getFirstChild() {
		return firstChild;
	}

	public void setFirstChild(StatementChild firstChild) {
		this.firstChild = firstChild;
	}

	public StatementChild getSecondChild() {
		return secondChild;
	}

	public void setSecondChild(StatementChild secondChild) {
		this.secondChild = secondChild;
	}

	public StatementChild getThirdChild() {
		return thirdChild;
	}

	public void setThirdChild(StatementChild thirdChild) {
		this.thirdChild = thirdChild;
	}

	public StatementParent getParentNode() {
		return parentNode;
	}

	public void setParentNode(StatementParent parentNode) {
		this.parentNode = parentNode;
	}

	public StatementRole getParentChild() {
		return parentChild;
	}

	public void setParentChild(StatementRole parentChild) {
		this.parentChild = parentChild;
	}

	public int getHeight() {
		return height;
	}

	public void setHeight(int height) {
		this.height = height;
	}

	public int getDepth() {
		return depth;
	}

	public void setDepth(int depth) {
		this.depth = depth;
	}

	public int getParameterizedType() {
		return parameterizedType;
	}

	public void setParameterizedType(int parameterizedType) {
		this.parameterizedType = parameterizedType;
	}

	public String getPackageName() {
		return packageName;
	}

	public void setPackageName(String packageName) {
		this.packageName = packageName;
	}

	public boolean isParameterType() {
		return isParameterType;
	}

	public void setParameterType(boolean isParameterType) {
		this.isParameterType = isParameterType;
	}

	public long getFirstChildId() {
		return firstChildId;
	}

	public void setFirstChildId(long firstChildId) {
		this.firstChildId = firstChildId;
	}

	public long getSecondChildId() {
		return secondChildId;
	}

	public void setSecondChildId(long secondChildId) {
		this.secondChildId = secondChildId;
	}

	public long getThirdChildId() {
		return thirdChildId;
	}

	public void setThirdChildId(long thirdChildId) {
		this.thirdChildId = thirdChildId;
	}

	public String getSourceCode() {
		return sourceCode;
	}

	public void setSourceCode(String sourceCode) {
		this.sourceCode = sourceCode;
	}

	@Override
	public String toString() {
		return "StatementFeatures [id=" + id + ", parentId=" + parentId + ", statementCategory=" + statementCategory
				+ ", firstChild=" + firstChild + ", secondChild=" + secondChild + ", thirdChild=" + thirdChild
				+ ", parentNode=" + parentNode + ", parentChild=" + parentChild + ", height=" + height + ", depth="
				+ depth + ", parameterizedType=" + parameterizedType + ", packageName=" + packageName
				+ ", isParameterType=" + isParameterType + ", firstChildId=" + firstChildId + ", secondChildId="
				+ secondChildId + ", thirdChildId=" + thirdChildId + ", sourceCode=" + sourceCode + "]";
	}
		
}
