package com.ejie.ad74a.model;

import java.io.IOException;
import java.util.Date;

import org.codehaus.jackson.map.ObjectMapper;

import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

/**
 * DispositivosMunicipio generated by UDA, 23-jun-2023 9:59:29.
 * 
 * @author UDA
 */

public class DispositivosMunicipio implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Long idDispSol23;
	private Solicitantes solicitantes;
	private Terminales terminal23;
	private Dispositivos dispositivo23;
	private Date fInstalacion23;
	private String usuAlta23;
	private Date fAlta23;
	private String usuBaja23;
	private Date fBaja23;
	private Long idMunicipio;
	private Long idProvincia;

	/* Campos auxiliares */
	private Boolean soloAlta;
	private Date fInstalacion23Desde;
	private Date fInstalacion23Hasta;

	/**
	 * Method 'DispositivosMunicipio'.
	 */
	public DispositivosMunicipio() {
		this.dispositivo23 = new Dispositivos();
		this.solicitantes = new Solicitantes();
		this.terminal23 = new Terminales();
	}

	/**
	 * Method 'DispositivosMunicipio'.
	 * 
	 * @param idDispSol23 Long
	 */
	public DispositivosMunicipio(Long idDispSol23) {
		this.dispositivo23 = new Dispositivos();
		this.solicitantes = new Solicitantes();
		this.terminal23 = new Terminales();
		this.idDispSol23 = idDispSol23;
	}

	/**
	 * Method 'DispositivosMunicipio'.
	 * 
	 * @param idDispSol23     Long
	 * @param idSolicitante23 Long
	 * @param idTerminal23    Long
	 * @param idDispositivo23 Long
	 * @param fInstalacion23  Date
	 * @param usuAlta23       String
	 * @param fAlta23         Date
	 * @param usuBaja23       String
	 * @param fBaja23         Date
	 */
	public DispositivosMunicipio(Long idDispSol23, Long idSolicitante23, Long idTerminal23, Long idDispositivo23,
			Date fInstalacion23, String usuAlta23, Date fAlta23, String usuBaja23, Date fBaja23) {

		this.idDispSol23 = idDispSol23;
		this.solicitantes = new Solicitantes(idSolicitante23);
		this.terminal23 = new Terminales(idTerminal23);
		this.dispositivo23 = new Dispositivos(idDispositivo23);
		this.fInstalacion23 = fInstalacion23;
		this.usuAlta23 = usuAlta23;
		this.fAlta23 = fAlta23;
		this.usuBaja23 = usuBaja23;
		this.fBaja23 = fBaja23;
	}

	/**
	 * Method 'DispositivosMunicipio'.
	 * 
	 * @param idDispSol23     Long
	 * @param idSolicitante23 Long
	 * @param terminal23      Terminales
	 * @param dispositivo23   Dispositivos
	 * @param fInstalacion23  Date
	 * @param usuAlta23       String
	 * @param fAlta23         Date
	 * @param usuBaja23       String
	 * @param fBaja23         Date
	 */
	public DispositivosMunicipio(Long idDispSol23, Long idSolicitante23, Terminales terminal23,
			Dispositivos dispositivo23, Date fInstalacion23, String usuAlta23, Date fAlta23, String usuBaja23,
			Date fBaja23) {

		this.idDispSol23 = idDispSol23;
		this.setIdSolicitante23(idSolicitante23);
		this.terminal23 = terminal23;
		this.dispositivo23 = dispositivo23;
		this.fInstalacion23 = fInstalacion23;
		this.usuAlta23 = usuAlta23;
		this.fAlta23 = fAlta23;
		this.usuBaja23 = usuBaja23;
		this.fBaja23 = fBaja23;
	}

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

	public Long getIdDispSol23() {
		return this.idDispSol23;
	}

	/**
	 * Method 'setIdDispSol23'.
	 *
	 * @param idDispSol23 Long
	 * @return
	 */

	public void setIdDispSol23(Long idDispSol23) {
		this.idDispSol23 = idDispSol23;
	}

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

	public Long getIdSolicitante23() {
		if (this.solicitantes != null) {
			return this.solicitantes.getIdSolicitante01();
		}
		return null;
	}

	/**
	 * Method 'setIdSolicitante23'.
	 *
	 * @param idSolicitante23 Long
	 * @return
	 */

	public void setIdSolicitante23(Long idSolicitante23) {
		if (this.solicitantes != null) {
			this.solicitantes.setIdSolicitante01(idSolicitante23);
		} else {
			this.solicitantes = new Solicitantes(idSolicitante23);
		}

	}

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

	public Long getIdTerminal23() {
		if (this.terminal23 != null) {
			return this.terminal23.getIdTerminal34();
		}
		return null;
	}

	/**
	 * Method 'setIdTerminal23'.
	 *
	 * @param idTerminal23 Long
	 * @return
	 */

	public void setIdTerminal23(Long idTerminal23) {
		if (this.terminal23 != null) {
			this.terminal23.setIdTerminal34(idTerminal23);
		} else {
			this.terminal23 = new Terminales(idTerminal23);
		}
	}

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

	public Long getIdDispositivo23() {
		if (this.dispositivo23 != null) {
			return this.dispositivo23.getIdDispositivo35();
		}
		return null;
	}

	/**
	 * Method 'setIdDispositivo23'.
	 *
	 * @param idDispositivo23 Long
	 * @return
	 */

	public void setIdDispositivo23(Long idDispositivo23) {
		if (this.dispositivo23 != null) {
			this.dispositivo23.setIdDispositivo35(idDispositivo23);
		} else {
			this.dispositivo23 = new Dispositivos(idDispositivo23);
		}
	}

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

	public String getUsuAlta23() {
		return this.usuAlta23;
	}

	/**
	 * Method 'setUsuAlta23'.
	 *
	 * @param usuAlta23 String
	 * @return
	 */

	public void setUsuAlta23(String usuAlta23) {
		this.usuAlta23 = usuAlta23;
	}

	/**
	 * Method 'getfAlta23'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfAlta23() {
		return this.fAlta23;
	}

	/**
	 * Method 'setfAlta23'.
	 *
	 * @param fAlta23 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfAlta23(Date fAlta23) {
		this.fAlta23 = fAlta23;
	}

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

	public String getUsuBaja23() {
		return this.usuBaja23;
	}

	/**
	 * Method 'setUsuBaja23'.
	 *
	 * @param usuBaja23 String
	 * @return
	 */

	public void setUsuBaja23(String usuBaja23) {
		this.usuBaja23 = usuBaja23;
	}

	/**
	 * Method 'getfBaja23'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfBaja23() {
		return this.fBaja23;
	}

	/**
	 * Method 'setfBaja23'.
	 *
	 * @param fBaja23 java.util.Date
	 * @return
	 */

	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfBaja23(Date fBaja23) {
		this.fBaja23 = fBaja23;
	}

	/**
	 * 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(" [ idDispSol23: ").append(this.idDispSol23).append(" ]");
		result.append(", [ idSolicitante23: ").append(this.getIdSolicitante23()).append(" ]");
		result.append(", [ idTerminal23: ").append(this.getIdTerminal23()).append(" ]");
		result.append(", [ idDispositivo23: ").append(this.getIdDispositivo23()).append(" ]");
		result.append(", [ fInstalacion23: ").append(this.fInstalacion23).append(" ]");
		result.append(", [ usuAlta23: ").append(this.usuAlta23).append(" ]");
		result.append(", [ fAlta23: ").append(this.fAlta23).append(" ]");
		result.append(", [ usuBaja23: ").append(this.usuBaja23).append(" ]");
		result.append(", [ fBaja23: ").append(this.fBaja23).append(" ]");
		result.append("}");
		return result.toString();
	}

	/**
	 * Method 'getfInstalacion23'.
	 *
	 * @return java.util.Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfInstalacion23() {
		return fInstalacion23;
	}

	/**
	 * Method 'setfInstalacion23'.
	 *
	 * @param fInstalacion23 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfInstalacion23(Date fInstalacion23) {
		this.fInstalacion23 = fInstalacion23;
	}

	/**
	 * Method 'getTerminal23'.
	 *
	 * @return Terminales
	 */
	public Terminales getTerminal23() {
		return terminal23;
	}

	/**
	 * Method 'setTerminal23'.
	 *
	 * @param terminal23 Terminales
	 * @return
	 */
	public void setTerminal23(Terminales terminal23) {
		this.terminal23 = terminal23;
	}

	/**
	 * Method 'getDispositivo23'.
	 *
	 * @return Dispositivos
	 */
	public Dispositivos getDispositivo23() {
		return dispositivo23;
	}

	/**
	 * Method 'setDispositivo23'.
	 *
	 * @param dispositivo23 Dispositivos
	 * @return
	 */
	public void setDispositivo23(Dispositivos dispositivo23) {
		this.dispositivo23 = dispositivo23;
	}

	/**
	 * Method 'obtenerJSON'.
	 *
	 * @return String
	 */
	@JsonIgnore
	public String obtenerJSON() {

		ObjectMapper mapper = new ObjectMapper();

		// Object to JSON in String
		try {
			return mapper.writeValueAsString(this);
		} catch (IOException e) {
			return "";
		}
	}

	/**
	 * Method 'getSoloAlta'.
	 *
	 * @return Boolean
	 */
	public Boolean getSoloAlta() {
		return soloAlta;
	}

	/**
	 * Method 'setSoloAlta'.
	 *
	 * @param soloAlta Boolean
	 * @return
	 */
	public void setSoloAlta(Boolean soloAlta) {
		this.soloAlta = soloAlta;
	}

	/**
	 * Method 'getSolicitantes'.
	 *
	 * @return Solicitantes
	 */
	public Solicitantes getSolicitantes() {
		return solicitantes;
	}

	/**
	 * Method 'setSolicitantes'.
	 *
	 * @param solicitantes Solicitantes
	 * @return
	 */
	public void setSolicitantes(Solicitantes solicitantes) {
		this.solicitantes = solicitantes;
	}

	/**
	 * Method 'getfInstalacion23Desde'.
	 *
	 * @return java.util.Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfInstalacion23Desde() {
		return fInstalacion23Desde;
	}

	/**
	 * Method 'setfInstalacion23Desde'.
	 *
	 * @param fInstalacion23Desde java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfInstalacion23Desde(Date fInstalacion23Desde) {
		this.fInstalacion23Desde = fInstalacion23Desde;
	}

	/**
	 * Method 'getfInstalacion23Hasta'.
	 *
	 * @return java.util.Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfInstalacion23Hasta() {
		return fInstalacion23Hasta;
	}

	/**
	 * Method 'setfInstalacion23Hasta'.
	 *
	 * @param fInstalacion23Hasta java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfInstalacion23Hasta(Date fInstalacion23Hasta) {
		this.fInstalacion23Hasta = fInstalacion23Hasta;
	}

	/**
	 * Method 'getIdMunicipio'.
	 *
	 * @return Long
	 */
	public Long getIdMunicipio() {
		return idMunicipio;
	}

	/**
	 * Method 'setIdMunicipio'.
	 *
	 * @param idMunicipio Long
	 * @return
	 */
	public void setIdMunicipio(Long idMunicipio) {
		this.idMunicipio = idMunicipio;
	}

	/**
	 * Method 'getIdProvincia'.
	 *
	 * @return Long
	 */
	public Long getIdProvincia() {
		return idProvincia;
	}

	/**
	 * Method 'setIdProvincia'.
	 *
	 * @param idProvincia Long
	 * @return
	 */
	public void setIdProvincia(Long idProvincia) {
		this.idProvincia = idProvincia;
	}

}
