package com.ejie.t17i.model;

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

import org.codehaus.jackson.annotate.JsonIgnore;

/**
 * * Municipio generated by UDA, 14-feb-2012 15:14:34.
 * 
XXXX
 */

public class Municipio implements java.io.Serializable {

	private static final long serialVersionUID = 3516156766701124681L;
	// Clave compuesta
	private Provincia provincia;
	private String id;
	private String nombre;
	private String idComarca;
	private List<Calle> calles = new ArrayList<Calle>();
	private List<Localidad> localidads = new ArrayList<Localidad>();

	/**
	 * Method 'Municipio'.
	 * 
	 */
	public Municipio() {
	}
	/**
	 * Method 'Municipio'.
	 * 
	 */
	public Municipio(Provincia provincia) {
		super();
		this.provincia = provincia;
	}
	/**
	 * Constructor para crear un filtro solo por Id.
	 * @param id
	 *            Identificador del municipio 
	 * @param provincia
	 *            Identificador &uacute;nico de la provincia
	 */
	public Municipio(String id, Provincia provincia) {
		super();
		this.id = id;
		this.provincia = provincia;
	}

	/**
	 * Method 'Municipio'.
	 * 
	 * @param provincia
	 *            Provincia
	 * @param id
	 *            String
	 * @param nombre
	 *            String
	 * @param idComarca
	 *            String
	 */
	public Municipio(Provincia provincia, String id, String nombre,
			String idComarca) {
		this.provincia = provincia;
		this.id = id;
		this.nombre = nombre;
		this.idComarca = idComarca;
	}

	/**
	 * Method 'Municipio'.
	 * 
	 * @param provincia
	 *            Provincia
	 * @param id
	 *            String
	 * @param nombre
	 *            String
	 * @param idComarca
	 *            String
	 * @param calles
	 *            List<Calle>
	 * @param localidads
	 *            List<Localidad>
	 */
	public Municipio(Provincia provincia, String id, String nombre,
			String idComarca, List<Calle> calles, List<Localidad> localidads) {

		this.provincia = provincia;
		this.id = id;
		this.nombre = nombre;
		this.idComarca = idComarca;
		this.calles = calles;
		this.localidads = localidads;
	}

	/**
	 * Method 'getProvincia'.
	 * 
	 * @return Provincia
	 */
	public Provincia getProvincia() {
		return this.provincia;
	}

	/**
	 * Method 'setProvincia'.
	 * 
	 * @param Provincia
	 *            provincia
	 * @return
	 */

	public void setProvincia(Provincia Provincia) {
		this.provincia = Provincia;
	}

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

	public String getId() {
		return this.id;
	}

	/**
	 * Method 'setId'.
	 * 
	 * @param id
	 *            String
	 * @return
	 */

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

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

	public String getNombre() {
		return this.nombre;
	}

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

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

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

	public String getIdComarca() {
		return this.idComarca;
	}

	/**
	 * Method 'setIdComarca'.
	 * 
	 * @param idComarca
	 *            String
	 * @return
	 */

	public void setIdComarca(String idComarca) {
		this.idComarca = idComarca;
	}

	/**
	 * Method 'getCalles'.
	 * 
	 * @return List
	 */
	@JsonIgnore
	public List<Calle> getCalles() {
		return this.calles;
	}

	/**
	 * Method 'setCalles'.
	 * 
	 * @param calles
	 *            List
	 * @return
	 */
	public void setCalles(List<Calle> calles) {
		this.calles = calles;
	}

	/**
	 * Method 'getLocalidads'.
	 * 
	 * @return List
	 */
	@JsonIgnore
	public List<Localidad> getLocalidads() {
		return this.localidads;
	}

	/**
	 * Method 'setLocalidads'.
	 * 
	 * @param localidads
	 *            List
	 * @return
	 */
	public void setLocalidads(List<Localidad> localidads) {
		this.localidads = localidads;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (getClass() != obj.getClass()) {
			return false;
		}
		Municipio other = (Municipio) obj;
		if (id == null) {
			if (other.id != null) {
				return false;
			}
		} else if (!id.equals(other.id)) {
			return false;
		}
		return true;
	}
}
