Caramba! Agora pela manhã recebi três pedidos de entrada no projeto. Aproveitando o entusiasmo, vou colocar aqui a idéia para classe Logradouro, parte integrante da Endereco, para que venham opiniões e ajuda. Não segui a idéia inicial do Grivon, pis adaptei ao padrão do resto do pacote, mas os métodos de conversão e transformação estão lá co um TODO para ele (Grivon) ou quem mais se interressar em ajudar.
Inicialmente temos a interface Logradouro que além do próprio Logradouro recebe e fornece o Logradouro separado em Tipo e Nome. Como já vimos isso é fundamental, e dessa forma fica opicional.
public interface Logradouro {
public String getLogradouro();
public void setLogradouro(String logradouro);
public String getTipo();
public void setTipo(String tipo);
public String getNome();
public void setNome(String nome);
}
Implemteii uma classe básica para representar um logradouro. Ela tem um objeto Tipo e um Nome.
public class LogradouroBasico implements Logradouro {
private TipoLogradouro tipo = new TipoLogradouro();
private NomeLogradouro nome = new NomeLogradouro();
public String getLogradouro() {
return tipo.getTipo() + " " + nome.getNome();
}
public void setLogradouro(String logradouro) {
tipo.setLogradouro(logradouro);
nome.setLogradouro(logradouro);
}
public String getTipo() {
return tipo.getTipo();
}
public void setTipo(String tipo) {
this.tipo.setTipo(tipo);
}
public String getNome() {
return nome.getNome();
}
public void setNome(String nome) {
this.nome.setNome(nome);
}
}
Classe para Tipo do Logradouro:
public static final String AEROPORTO = "Aeroporto";
public static final String ALAMEDA = "Alameda";
public static final String AREA = "Área";
public static final String AVENIDA = "Avenida";
public static final String CAMPO = "Campo";
public static final String CHACARA = "Chácara";
public static final String COLONIA = "Colônia";
public static final String CONDOMINIO = "Condomínio";
public static final String CONJUNTO = "Conjunto";
public static final String DISTRITO = "Distrito";
public static final String ESPLANADA = "Esplanada";
public static final String ESTACAO = "Estação";
public static final String ESTRADA = "Estrada";
public static final String FAVELA = "Favela";
public static final String FAZENDA = "Fazenda";
public static final String FEIRA = "Feira";
public static final String JARDIM = "Jardim";
public static final String LADEIRA = "Ladeira";
public static final String LAGO = "Lago";
public static final String LAGOA = "Lagoa";
public static final String LARGO = "Largo";
public static final String LOTEAMENTO = "Loteamento";
public static final String MORRO = "Morro";
public static final String NUCLEO = "Núcleo";
public static final String PARQUE = "Parque";
public static final String PASSARELA = "Passarela";
public static final String PATIO = "Pátio";
public static final String PRACA = "Praça";
public static final String QUADRA = "Quadra";
public static final String RECANTO = "Recanto";
public static final String RESIDENCIAL = "Residencial";
public static final String RODOVIA = "Rodovia";
public static final String RUA = "Rua";
public static final String SETOR = "Setor";
public static final String SITIO = "Sítio";
public static final String TRAVESSA = "Travessa";
public static final String TRECHO = "Trecho";
public static final String TREVO = "Trevo";
public static final String VALE = "Vale";
public static final String VEREDA = "Vereda";
public static final String VIA = "Via";
public static final String VIADUTO = "Viaduto";
public static final String VIELA = "Viela";
public static final String VILA = "Vila";
private static final String[] TIPOS = {
AEROPORTO, ALAMEDA, AREA, AVENIDA,
CAMPO, CHACARA, COLONIA, CONDOMINIO,
CONJUNTO, DISTRITO, ESPLANADA, ESTACAO,
ESTRADA, FAVELA, FAZENDA, FEIRA,
JARDIM, LADEIRA, LAGO, LAGOA,
LARGO, LOTEAMENTO, MORRO, NUCLEO,
PARQUE, PASSARELA, PATIO, PRACA,
QUADRA, RECANTO, RESIDENCIAL, RODOVIA,
RUA, SETOR, SITIO, TRAVESSA,
TRECHO, TREVO, VALE, VEREDA,
VIA, VIADUTO, VIELA, VILA
};
public static final String AEROPORTO_AB = "";//TODO
public static final String ALAMEDA_AB = "";//TODO
public static final String AREA_AB = "";
public static final String AVENIDA_AB = "Av";
public static final String CAMPO_AB = "";//TODO
public static final String CHACARA_AB = "";//TODO
public static final String COLONIA_AB = "";//TODO
public static final String CONDOMINIO_AB = "";//TODO
public static final String CONJUNTO_AB = "";//TODO
public static final String DISTRITO_AB = "";//TODO
public static final String ESPLANADA_AB = "";//TODO
public static final String ESTACAO_AB = "";//TODO
public static final String ESTRADA_AB = "Est";
public static final String FAVELA_AB = "";//TODO
public static final String FAZENDA_AB = "";//TODO
public static final String FEIRA_AB = "";//TODO
public static final String JARDIM_AB = "";//TODO
public static final String LADEIRA_AB = "";//TODO
public static final String LAGO_AB = "";//TODO
public static final String LAGOA_AB = "";//TODO
public static final String LARGO_AB = "";//TODO
public static final String LOTEAMENTO_AB = "";//TODO
public static final String MORRO_AB = "";//TODO
public static final String NUCLEO_AB = "";//TODO
public static final String PARQUE_AB = "";//TODO
public static final String PASSARELA_AB = "";//TODO
public static final String PATIO_AB = "";//TODO
public static final String PRACA_AB = "";//TODO
public static final String QUADRA_AB = "";//TODO
public static final String RECANTO_AB = "";//TODO
public static final String RESIDENCIAL_AB = "";//TODO
public static final String RODOVIA_AB = "";//TODO
public static final String RUA_AB = "R";
public static final String SETOR_AB = "";//TODO
public static final String SITIO_AB = "";//TODO
public static final String TRAVESSA_AB = "";//TODO
public static final String TRECHO_AB = "";//TODO
public static final String TREVO_AB = "";//TODO
public static final String VALE_AB = "";//TODO
public static final String VEREDA_AB = "";//TODO
public static final String VIA_AB = "";//TODO
public static final String VIADUTO_AB = "";//TODO
public static final String VIELA_AB = "";//TODO
public static final String VILA_AB = "";//TODO
private static final String[] ABREVIATURAS = {
AEROPORTO_AB, ALAMEDA_AB, AREA_AB, AVENIDA_AB,
CAMPO_AB, CHACARA_AB, COLONIA_AB, CONDOMINIO_AB,
CONJUNTO_AB, DISTRITO_AB, ESPLANADA_AB, ESTACAO_AB,
ESTRADA_AB, FAVELA_AB, FAZENDA_AB, FEIRA_AB,
JARDIM_AB, LADEIRA_AB, LAGO_AB, LAGOA_AB,
LARGO_AB, LOTEAMENTO_AB, MORRO_AB, NUCLEO_AB,
PARQUE_AB, PASSARELA_AB, PATIO_AB, PRACA_AB,
QUADRA_AB, RECANTO_AB, RESIDENCIAL_AB, RODOVIA_AB,
RUA_AB, SETOR_AB, SITIO_AB, TRAVESSA_AB,
TRECHO_AB, TREVO_AB, VALE_AB, VEREDA_AB,
VIA_AB, VIADUTO_AB, VIELA_AB, VILA_AB
};
private List list;
private String tipo = "";
private boolean normalize = false;
public TipoLogradouro() {
super();
list = new ArrayList();
for (int i=0; i < TIPOS.length; i++){
list.add(TIPOS[i]);
}
}
public boolean equals(Object obj) {
return this.toString().equals(obj.toString());
}
public String getTipo() {
return tipo;
}
public void setLogradouro(String logradouro){
for (int i=0; i < logradouro.length(); i++){
if (Character.isSpaceChar(logradouro.charAt(i))){
break;
} else {
tipo = tipo + logradouro.charAt(i);
}
}
if (normalize) doNormalize();
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public String toString() {
return getTipo();
}
public boolean isNormalize() {
return normalize;
}
public void setNormalize(boolean normalize) {
this.normalize = normalize;
}
private void doNormalize(){
//TODO To Grivon Do!
}
E uma para o nome do Logradouro:
public class NomeLogradouro {
private String nome = "";
public void setLogradouro(String logradouro){
boolean afterSpace = false;
for (int i=0; i < logradouro.length(); i++){
if (Character.isSpaceChar(logradouro.charAt(i)) &&
!afterSpace){
afterSpace = true;
} else if (afterSpace){
nome = nome + logradouro.charAt(i);
}
}
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public boolean equals(Object obj) {
return this.toString().equals(obj.toString());
}
public String toString() {
return getNome();
}
}