/* Copyright 2025 FSFLA
   Alexandre Oliva <lxoliva@fsfla.org>

   Este arquivo é parte do IRPF-Livre.

   IRPF-Livre é Software Livre; você pode redistribuir e/ou modificar
   a maior parte dele, inclusive este arquivo, de acordo com os termos
   da GNU Lesser General Public License publicada pela Free Software
   Foundation; tanto a versão 2.1 dessa licença, quanto (à sua
   escolha) qualquer versão posterior.

   Alguns componentes podem ser distribuídos e/ou modificados de
   acordo com outras licenças, incluídas no executável e consolidadas
   no arquivo list/licenses nos fontes.

   IRPF-Livre é distribuído na esperança de que ele seja útil, mas SEM
   QUALQUER GARANTIA; até mesmo sem qualquer garantia implícita de
   COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte
   a GNU Lesser General Public License para mais detalhes.

   Você deve ter recebido uma cópia da GNU Lesser General Public
   License junto com IRPF-Livre; se não, escreva para a Free Software
   Foundation, Inc., no endereço 59 Temple Street, Suite 330, Boston,
   MA 02111-1307 USA.

   Veja uma tradução não oficial da licença em
   http://creativecommons.org/licenses/LGPL/2.1/legalcode.pt


   This file is part of IRPF-Livre.

   IRPF-Livre is free software; you can redistribute and/or modify
   most of it, this file included, under the terms of the GNU Lesser
   General Public License as published by the Free Software
   Foundation; either version 2.1 of the License, or (at your option)
   any later version.

   Some components can be distributed and/or modified under different
   licenses, included in the executable and consolidated in the file
   list/licenses in the source tree.

   IRPF-Livre is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with IRPF-Livre; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
   USA.
*/

package serpro.ppgd.irpf.gcap.alienacao;
import java.util.Vector;

import serpro.ppgd.irpf.tabelas.CadastroTabelasIRPF;
import serpro.ppgd.negocio.Alfa;
import serpro.ppgd.negocio.CEP;
import serpro.ppgd.negocio.Codigo;
import serpro.ppgd.negocio.ObjetoNegocio;
import serpro.ppgd.negocio.Observador;

public class EnderecoBemImovel extends ObjetoNegocio
{
  private Alfa bairro = new Alfa (this, "");
  private Alfa bairroEx = new Alfa (this, "");
  private CEP cep = new CEP (this, "");
  private Alfa cidadeEx = new Alfa (this, "");
  private Alfa codigoPostalEx = new Alfa (this, "");
  private Alfa complemento = new Alfa (this, "");
  private Alfa complementoEx = new Alfa (this, "");
  private Alfa logradouro = new Alfa (this, "");
  private Alfa logradouroEx = new Alfa (this, "");
  private Codigo municipio = new Codigo (this, "", new Vector ());
  private Alfa numero = new Alfa (this, "");
  private Alfa numeroEx = new Alfa (this, "");
  private Codigo paisEx = new Codigo (this, "", CadastroTabelasIRPF.recuperarPaises ());
  private Alfa tipoLogradouro = new Alfa (this, "");
  private Codigo uf = new Codigo (this, "UF", CadastroTabelasIRPF.recuperarUFs (1));

  public EnderecoBemImovel ()
  {
    getUf ().addObservador (new Observador ()
    {
      public void notifica (Object observado, String nomePropriedade, Object valorAntigo, Object valorNovo)
      {
	if (uf.isVazio () || uf.asString ().equals ("EX"))
	  municipio.setColecaoElementoTabela (new Vector ());
	else
	  {
	    String strUf = uf.getConteudoAtual (0);
	    municipio.setColecaoElementoTabela (CadastroTabelasIRPF.recuperarMunicipios (strUf, 1));
	  }
      }
    });
  }

  public Alfa getBairro ()
  {
    return bairro;
  }

  public Alfa getBairroEx ()
  {
    return bairroEx;
  }

  public CEP getCep ()
  {
    return cep;
  }

  public Alfa getCidadeEx ()
  {
    return cidadeEx;
  }

  public Alfa getCodigoPostalEx ()
  {
    return codigoPostalEx;
  }

  public Alfa getComplemento ()
  {
    return complemento;
  }

  public Alfa getComplementoEx ()
  {
    return complementoEx;
  }

  public Alfa getLogradouro ()
  {
    return logradouro;
  }

  public Alfa getLogradouroEx ()
  {
    return logradouroEx;
  }

  public Codigo getMunicipio ()
  {
    return municipio;
  }

  public Alfa getNumero ()
  {
    return numero;
  }

  public Alfa getNumeroEx ()
  {
    return numeroEx;
  }

  public Codigo getPaisEx ()
  {
    return paisEx;
  }

  public Alfa getTipoLogradouro ()
  {
    return tipoLogradouro;
  }

  public Codigo getUf ()
  {
    return uf;
  }

}
