package es.uv.saic.domain;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;

public class Indicador {
	
	private String dimension;
	private String indicador;
	private String valor;
	private String ambit;
	private List<CursoValor> valores;
	
	public Indicador() {
		this.valores = new ArrayList<CursoValor>();
	}
	
	public Indicador(String dimension, String indicador, String valor) {
		this.dimension = dimension;
		this.indicador = indicador;
		this.valor = valor;
		this.valores = new ArrayList<CursoValor>();
	}

	public Indicador(String dimension, String indicador, String valor, String ambit, List<CursoValor> cursoValors) {
		this.dimension = dimension;
		this.indicador = indicador;
		this.valor = valor;
		this.ambit = ambit;
		this.valores = cursoValors;
	}

	public String getDimension() {
		return dimension;
	}
	
	public void setDimension(String dimension) {
		this.dimension = dimension;
	}
	
	public String getIndicador() {
		return indicador;
	}

	public void setIndicador(String indicador) {
		this.indicador = indicador;
	}

	public String getValor() {
		return valor;
	}

	public void setValor(String valor) {
		this.valor = valor;
	}
	
	public String getAmbit() {
		return ambit;
	}

	public void setAmbit(String ambit) {
		this.ambit = ambit;
	}

	public List<CursoValor> getValores() {
		return valores;
	}

	public void setValores(List<CursoValor> valores) {
		this.valores = valores;
	}
	
	public void addCursoValor(String curso, String valor) {
		this.valores.add(new CursoValor(curso, valor));
	}
	
	public void obtenerValor() {
		this.valor = this.maxCursoValor().getValor().toString();
	}
	
	public CursoValor maxCursoValor() {
		Optional<CursoValor> v = this.valores.stream().max(Comparator.comparing(CursoValor::getCurso));
		if(v.isPresent()) {
			return v.get();
		}
		else {
			return null;
		}
	}
}
