package com.ejie.ab39a.model;

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

import com.fasterxml.jackson.annotation.JsonIgnore;

/**
 * Entidades.
 * 
 *  
 */

public class Entidades implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Integer codentidad;
	private TecnicosEntidad tecnicosEntidad;
	private String desentidad;
	private String cifnif;
	private String codth;
	private String codmun;
	private String direccion;
	private List<PlanesEstrategicos> planesEstrategicoses = new ArrayList<PlanesEstrategicos>();
	private String email;
	private Integer numCalle;
	private Integer numTrabajadores;
	private Integer numTrabHombre;
	private Integer numTrabMujer;
	private Integer tfno;
	private String cp;
	private Integer tipoEntidad;

	private String descTh;
	private String descMun;

	private boolean datosCompletos;

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

	/**
	 * Method 'Entidades'.
	 * 
	 * @param codentidad
	 *            Integer
	 */
	public Entidades(Integer codentidad) {
		super();
		this.codentidad = codentidad;
	}

	/**
	 * Method 'Entidades'.
	 * 
	 * @param codentidad
	 *            Integer
	 * @param desentidad
	 *            String
	 * @param cifnif
	 *            String
	 * @param codth
	 *            String
	 * @param codmun
	 *            String
	 * @param direccion
	 *            String
	 * @param email
	 *            String
	 * @param numCalle
	 *            Integer
	 * @param numTrabajadores
	 *            Integer
	 * @param numTrabHombre
	 *            Integer
	 * @param numTrabMujer
	 *            Integer
	 * @param tfno
	 *            Integer
	 * @param cp
	 *            Integer
	 * @param tipoEntidad
	 *            Integer
	 * @param baja
	 *            Integer
	 * @param tecnicosEntidad
	 *            TecnicosEntidad
	 */

	public Entidades(Integer codentidad, String desentidad, String cifnif, String codth, String codmun,
			String direccion, String email, Integer numCalle, Integer numTrabajadores, Integer numTrabHombre,
			Integer numTrabMujer, Integer tfno, String cp, Integer tipoEntidad, 
			TecnicosEntidad tecnicosEntidad) {
		super();
		this.codentidad = codentidad;
		this.tecnicosEntidad = tecnicosEntidad;
		this.desentidad = desentidad;
		this.cifnif = cifnif;
		this.codth = codth;
		this.codmun = codmun;
		this.direccion = direccion;
		this.email = email;
		this.numCalle = numCalle;
		this.numTrabajadores = numTrabajadores;
		this.numTrabHombre = numTrabHombre;
		this.numTrabMujer = numTrabMujer;
		this.tfno = tfno;
		this.cp = cp;
		this.tipoEntidad = tipoEntidad;
	}

	
	/**
	 * Method 'getCodentidad'.
	 *
	 * @return Integer
	 */

	public Integer getCodentidad() {
		return this.codentidad;
	}

	/**
	 * Method 'setCodentidad'.
	 *
	 * @param codentidad
	 *            Integer
	 */

	public void setCodentidad(Integer codentidad) {
		this.codentidad = codentidad;
	}

	/**
	 * Method 'getTecnicosEntidad'.
	 *
	 * @return TecnicosEntidad
	 */

	public TecnicosEntidad getTecnicosEntidad() {
		return this.tecnicosEntidad;
	}

	/**
	 * Method 'setTecnicosEntidad'.
	 *
	 * @param tecnicosEntidad
	 *            TecnicosEntidad
	 */

	public void setTecnicosEntidad(TecnicosEntidad tecnicosEntidad) {
		this.tecnicosEntidad = tecnicosEntidad;
	}

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

	public String getDesentidad() {
		return this.desentidad;
	}

	/**
	 * Method 'setDesentidad'.
	 *
	 * @param desentidad
	 *            String
	 */

	public void setDesentidad(String desentidad) {
		this.desentidad = desentidad;
	}

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

	public String getCifnif() {
		return this.cifnif;
	}

	/**
	 * Method 'setCifnif'.
	 *
	 * @param cifnif
	 *            String
	 */

	public void setCifnif(String cifnif) {
		this.cifnif = cifnif;
	}

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

	public String getCodth() {
		return this.codth;
	}

	/**
	 * Method 'setCodth'.
	 *
	 * @param codth
	 *            String
	 */

	public void setCodth(String codth) {
		this.codth = codth;
	}

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

	public String getCodmun() {
		return this.codmun;
	}

	/**
	 * Method 'setCodmun'.
	 *
	 * @param codmun
	 *            String
	 */

	public void setCodmun(String codmun) {
		this.codmun = codmun;
	}

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

	public String getDireccion() {
		return this.direccion;
	}

	/**
	 * Method 'setDireccion'.
	 *
	 * @param direccion
	 *            String
	 */

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	/**
	 * Method 'getPlanesEstrategicoses'.
	 *
	 * @return List
	 */
	@JsonIgnore
	public List<PlanesEstrategicos> getPlanesEstrategicoses() {
		return this.planesEstrategicoses;
	}

	/**
	 * Method 'setPlanesEstrategicoses'.
	 *
	 * @param planesEstrategicoses
	 *            List
	 */
	public void setPlanesEstrategicoses(List<PlanesEstrategicos> planesEstrategicoses) {
		this.planesEstrategicoses = planesEstrategicoses;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Integer getNumCalle() {
		return numCalle;
	}

	public void setNumCalle(Integer numCalle) {
		this.numCalle = numCalle;
	}

	public Integer getNumTrabajadores() {
		return numTrabajadores;
	}

	public void setNumTrabajadores(Integer numTrabajadores) {
		this.numTrabajadores = numTrabajadores;
	}

	public Integer getNumTrabHombre() {
		return numTrabHombre;
	}

	public void setNumTrabHombre(Integer numTrabHombre) {
		this.numTrabHombre = numTrabHombre;
	}

	public Integer getNumTrabMujer() {
		return numTrabMujer;
	}

	public void setNumTrabMujer(Integer numTrabMujer) {
		this.numTrabMujer = numTrabMujer;
	}

	public Integer getTfno() {
		return tfno;
	}

	public void setTfno(Integer tfno) {
		this.tfno = tfno;
	}

	public String getCp() {
		return cp;
	}

	public void setCp(String cp) {
		this.cp = cp;
	}

	public Integer getTipoEntidad() {
		return tipoEntidad;
	}

	public void setTipoEntidad(Integer tipoEntidad) {
		this.tipoEntidad = tipoEntidad;
	}

	
	public String getDescTh() {
		return descTh;
	}

	public void setDescTh(String descTh) {
		this.descTh = descTh;
	}

	public String getDescMun() {
		return descMun;
	}

	public void setDescMun(String descMun) {
		this.descMun = descMun;
	}

	
	/**
	 * @return the datosCompletos
	 */
	public boolean isDatosCompletos() {
		return datosCompletos;
	}

	/**
	 * @param datosCompletos
	 *            the datosCompletos to set
	 */
	public void setDatosCompletos(boolean datosCompletos) {
		this.datosCompletos = datosCompletos;
	}

	

	/**
	 * 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(" [ codentidad: ").append(this.codentidad).append(" ]");
		result.append(", [ desentidad: ").append(this.desentidad).append(" ]");
		result.append(", [ cifnif: ").append(this.cifnif).append(" ]");
		result.append(", [ codth: ").append(this.codth).append(" ]");
		result.append(", [ codmun: ").append(this.codmun).append(" ]");
		result.append(", [ direccion: ").append(this.direccion).append(" ]");
		result.append("}");
		return result.toString();
	}

	/**
	 * 
	 *  
	 *
	 */
	public static class EntidadesCifComparator implements Comparator<Entidades> {

		@Override
		public int compare(Entidades o1, Entidades o2) {
			int dev = -1;

			if (o1 != null && o2 != null) {
				dev = (o1.getCifnif().equalsIgnoreCase(o2.getCifnif()) ? 0 : 1);
			}

			return dev;
		}

	}

}