package es.uniovi.reflection.patternmining.features;

import es.uniovi.reflection.patternmining.category.JavaType;
import es.uniovi.reflection.patternmining.category.TypeParent;
import es.uniovi.reflection.patternmining.category.TypeRole;

public class TypeFeatures {

	private long id;
	private long parentId = 0; //information from parent
	private JavaType typeCategory;
	private boolean isPrimitive;
	private int dimensions;
	private int generics;
	private int height;
	private TypeParent parentNode;
	private TypeRole parentChild;
	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 JavaType getTypeCategory() {
		return typeCategory;
	}
	
	public void setTypeCategory(JavaType typeCategory) {
		this.typeCategory = typeCategory;
	}
	
	public boolean isPrimitive() {
		return isPrimitive;
	}
	
	public void setPrimitive(boolean isPrimitive) {
		this.isPrimitive = isPrimitive;
	}
	
	public int getDimensions() {
		return dimensions;
	}
	
	public void setDimensions(int dimensions) {
		this.dimensions = dimensions;
	}
	
	public int getGenerics() {
		return generics;
	}
	
	public void setGenerics(int generics) {
		this.generics = generics;
	}
	
	public int getHeight() {
		return height;
	}
	
	public void setHeight(int height) {
		this.height = height;
	}
	
	public TypeParent getParentNode() {
		return parentNode;
	}
	
	public void setParentNode(TypeParent parentNode) {
		this.parentNode = parentNode;
	}
	
	public TypeRole getParentChild() {
		return parentChild;
	}
	
	public void setParentChild(TypeRole parentChild) {
		this.parentChild = parentChild;
	}

	public String getSourceCode() {
		return sourceCode;
	}

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

	@Override
	public String toString() {
		return "TypeFeatures [id=" + id + ", parentId=" + parentId + ", typeCategory=" + typeCategory + ", isPrimitive="
				+ isPrimitive + ", dimensions=" + dimensions + ", generics=" + generics + ", height=" + height
				+ ", parentNode=" + parentNode + ", parentChild=" + parentChild + ", sourceCode=" + sourceCode + "]";
	}
	
}
