package com.ejie.ab39a.model;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.i18n.LocaleContextHolder;

import com.ejie.ab39a.utils.Utilidades;
import com.ejie.x38.util.Constants;

/**
 * Elemento.
 * 
 *  
 */

public class ElementosArbol implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Long idElementoA;
	private Long ordenA;
	private Long nivelA;
	private String nombreA;
	private String nombrecasA;
	private String helburuA;
	private String helburucasA;
	private Long elementoPadreA;
	private Long codPlaneA;
	private List<ElementosArbol> hijosArbol = new ArrayList<ElementosArbol>();
	private List<AccionesPg> acciones = new ArrayList<AccionesPg>();
	private Long version;
	private ElementosArbol elemAntiguo;
	private Integer elemDistinto;
	private Integer isElemNuevo;

	/**
	 * Method 'Elemento'.
	 */
	public ElementosArbol() {
		super();
	}

	/**
	 * Method 'Elemento'.
	 * 
	 * @param idElemento
	 *            Long elemento id
	 */
	public ElementosArbol(Long idElemento) {
		super();
		this.idElementoA = idElemento;
	}

	/**
	 * Method 'Elemento'.
	 * 
	 * @param idElemento
	 *            Long id elemento
	 * @param orden
	 *            Long orden
	 * @param nivel
	 *            Long nivel
	 * @param nombre
	 *            String nombre
	 * @param nombrecas
	 *            String nombreCas
	 * @param codPlane
	 *            Long codPlane
	 * @param elementoPadre
	 *            Long id elemento padre
	 * @param helburu
	 *            String helburu
	 * @param helburucas
	 *            String helburu castellano
	 */
	public ElementosArbol(Long idElemento, Long orden, Long nivel, String nombre, String nombrecas, String helburu,
			String helburucas, Long elementoPadre, Long codPlane) {
		super();
		this.idElementoA = idElemento;
		this.ordenA = orden;
		this.nivelA = nivel;
		this.nombreA = nombre;
		this.nombrecasA = nombrecas;
		this.helburuA = helburu;
		this.helburucasA = helburucas;
		this.elementoPadreA = elementoPadre;
		this.codPlaneA = codPlane;
	}

	/**
	 * Method 'getIdElemento'.
	 *
	 * @return Long
	 */

	public Long getIdElementoA() {
		return this.idElementoA;
	}

	/**
	 * Method 'setIdElemento'.
	 *
	 * @param idElemento
	 *            Long
	 */

	public void setIdElementoA(Long idElemento) {
		this.idElementoA = idElemento;
	}

	/**
	 * Method 'getOrden'.
	 *
	 * @return Long
	 */

	public Long getOrdenA() {
		return this.ordenA;
	}

	/**
	 * Method 'setOrden'.
	 *
	 * @param orden
	 *            Long
	 */

	public void setOrdenA(Long orden) {
		this.ordenA = orden;
	}

	/**
	 * Method 'getNivel'.
	 *
	 * @return Long
	 */

	public Long getNivelA() {
		return this.nivelA;
	}

	/**
	 * Method 'setNivel'.
	 *
	 * @param nivel
	 *            Long
	 */

	public void setNivelA(Long nivel) {
		this.nivelA = nivel;
	}

	/**
	 * Method 'getNombre'.
	 *
	 * @return String
	 */

	public String getNombreA() {
		return this.nombreA;
	}

	/**
	 * Method 'setNombre'.
	 *
	 * @param nombre
	 *            String
	 */

	public void setNombreA(String nombre) {
		this.nombreA = nombre;
	}

	/**
	 * Method 'getNombre'.
	 *
	 * @return String
	 */

	public String getNombreEsEu() {
		if (Constants.EUSKARA.equals(LocaleContextHolder.getLocale().getLanguage())) {
			if (Utilidades.isEmpty(this.getNombreA())) {
				return this.getNombrecasA();
			} else {
				return this.getNombreA();
			}
		} else {
			if (Utilidades.isEmpty(this.getNombrecasA())) {
				return this.getNombreA();
			} else {
				return this.getNombrecasA();
			}
		}
	}

	/**
	 * Method 'getNombrecas'.
	 *
	 * @return String
	 */

	public String getNombrecasA() {
		return this.nombrecasA;
	}

	/**
	 * Method 'setNombrecas'.
	 *
	 * @param nombrecas
	 *            String
	 */

	public void setNombrecasA(String nombrecas) {
		this.nombrecasA = nombrecas;
	}

	/**
	 * Method 'getHelburu'.
	 *
	 * @return String
	 */

	public String getHelburuA() {
		return this.helburuA;
	}

	/**
	 * Method 'setHelburu'.
	 *
	 * @param helburu
	 *            String
	 */

	public void setHelburuA(String helburu) {
		this.helburuA = helburu;
	}

	/**
	 * Method 'getHelburu'.
	 *
	 * @return String
	 */

	public String getHelburuEsEu() {
		if (Constants.EUSKARA.equals(LocaleContextHolder.getLocale().getLanguage())) {
			if (Utilidades.isEmpty(this.getHelburuA())) {
				return this.getHelburucasA();
			} else {
				return this.getHelburuA();
			}
		} else {
			if (Utilidades.isEmpty(this.getHelburucasA())) {
				return this.getHelburuA();
			} else {
				return this.getHelburucasA();
			}
		}
	}

	/**
	 * Intended only for logging and debugging.
	 * 
	 * Here, the contents of every main field are placed into the result.
	 * 
	 * @return String
	 */
	@Override
	public String toString() {
		StringBuilder result = new StringBuilder();
		result.append(this.getClass().getName()).append(" Object { ");
		result.append(" [ idElemento: ").append(this.idElementoA).append(" ]");
		result.append(", [ orden: ").append(this.ordenA).append(" ]");
		result.append(", [ nivel: ").append(this.nivelA).append(" ]");
		result.append(", [ nombre: ").append(this.nombreA).append(" ]");
		result.append(", [ nombrecas: ").append(this.nombrecasA).append(" ]");
		result.append(", [ helburu: ").append(this.helburuA).append(" ]");
		result.append(", [ helburucas: ").append(this.helburucasA).append(" ]");
		result.append(", [ elementoPadreA: ").append(this.elementoPadreA).append(" ]");
		result.append(", [ codPlaneA: ").append(this.codPlaneA).append(" ]");
		result.append("}");
		return result.toString();
	}

	/**
	 * Method 'getHijosArbol'.
	 * 
	 * @return List<ElementosArbol>
	 */
	public List<ElementosArbol> getHijosArbol() {
		return this.hijosArbol;
	}

	/**
	 * Method 'setHijosArbol'.
	 * 
	 * @param elementosArbol
	 *            List<ElementosArbol>
	 */
	public void setHijosArbol(List<ElementosArbol> elementosArbol) {
		this.hijosArbol = elementosArbol;
	}

	/**
	 * Method 'getElementoPadreA'.
	 * 
	 * @return Long
	 */
	public Long getElementoPadreA() {
		return elementoPadreA;
	}

	/**
	 * Method 'setElementoPadreA'.
	 * 
	 * @param elementoPadre
	 *            Long
	 */
	public void setElementoPadreA(Long elementoPadre) {
		this.elementoPadreA = elementoPadre;
	}

	/**
	 * Method 'getHelburucasA'.
	 * 
	 * @return String
	 */
	public String getHelburucasA() {
		return helburucasA;
	}

	/**
	 * Method 'setHelburucasA'.
	 * 
	 * @param helburucas
	 *            String
	 */
	public void setHelburucasA(String helburucas) {
		this.helburucasA = helburucas;
	}

	/**
	 * Method 'getCodPlaneA'.
	 * 
	 * @return Long
	 */
	public Long getCodPlaneA() {
		return codPlaneA;
	}

	/**
	 * Method 'setCodPlaneA'.
	 * 
	 * @param codPlane
	 *            Long
	 */
	public void setCodPlaneA(Long codPlane) {
		this.codPlaneA = codPlane;
	}

	/**
	 * 
	 * @return List<AccionesPg>
	 */
	public List<AccionesPg> getAcciones() {
		return this.acciones;
	}

	/**
	 * 
	 * @param acciones
	 *            List<AccionesPg>
	 */
	public void setAcciones(List<AccionesPg> acciones) {
		this.acciones = acciones;
	}

	/**
	 * 
	 * @return Long
	 */
	public Long getVersion() {
		return this.version;
	}

	/**
	 * 
	 * @param version
	 *            Long
	 */
	public void setVersion(Long version) {
		this.version = version;
	}

	/**
	 * 
	 * @return ElementosArbol
	 */
	public ElementosArbol getElemAntiguo() {
		return this.elemAntiguo;
	}

	/**
	 * 
	 * @param elemAntiguo
	 *            ElementosArbol elemAntiguo
	 */
	public void setElemAntiguo(ElementosArbol elemAntiguo) {
		this.elemAntiguo = elemAntiguo;
	}

	/**
	 * 
	 * @return Integer Integer
	 */
	public Integer getElemDistinto() {
		return this.elemDistinto;
	}

	/**
	 * 
	 * @param elemDistinto
	 *            Integer
	 */
	public void setElemDistinto(Integer elemDistinto) {
		this.elemDistinto = elemDistinto;
	}

	/**
	 * 
	 * @return Integer
	 */
	public Integer getIsElemNuevo() {
		return this.isElemNuevo;
	}

	/**
	 * 
	 * @param isElemNuevo
	 *            Integer
	 */
	public void setIsElemNuevo(Integer isElemNuevo) {
		this.isElemNuevo = isElemNuevo;
	}

}
