package gcom.gui.micromedicao;
import gcom.micromedicao.ArquivoTextoRoteiroEmpresa;
import gcom.util.Util;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
public class DadosMovimentacao implements Serializable {
private static final long serialVersionUID = 1L;
private Long imei;
private Integer codigoAnormalidade;
private Integer localidade;
private Integer setorComercial;
private Integer numeroQuadra;
private Integer numeroLote;
private Integer numeroSubLote;
private Integer tipoMedicao;
private Integer grupoFaturamento;
private Integer matriculaImovel;
private Integer perfilImovel;
private String nomeCliente;
private String endereco;
private String marcaHidrometro;
private String numeroHidrometro;
private String capacidadeHidrometro;
private String localInstalacao;
private Date dataInstalacao;
private String protecaoHidrometro;
private Integer situacaoLigacaoAgua;
private Integer situacaoLigacaoEsgoto;
private String decricaoAbreviadaImovel;
private Integer quantidadeEconomias;
private Integer leituraAnterior;
private Integer faixaLeituraEsperadaInferior;
private Integer faixaLeituraEsperadaSuperior;
private Integer leituraHidrometro;
private String stringDataLeitura;
private Date dataLeituraCampo;
private String horaLeituraCampo;
private Byte indicadorConfirmacaoLeitura;
private Integer matriculaOperador;
private String inscricao;
private Integer codigoRota;
private Integer numeroSequencialRota;
private String msgImovelSuprimidoOuHidrometroRetirado;
private boolean naoPermitirAlterar;
private ArquivoTextoRoteiroEmpresa arquivoTextoRoteiroEmpresa;
private Date dataLeituraCronograma;
public DadosMovimentacao(){}
public DadosMovimentacao(Integer imovel, Integer leitura,
Integer anormalidade, Date data, Long imei, Byte indicador,
Integer tipoMedicao) {
this.codigoAnormalidade = anormalidade;
this.dataLeituraCampo = data;
this.leituraHidrometro = leitura;
this.matriculaImovel = imovel;
this.imei = imei;
this.indicadorConfirmacaoLeitura = indicador;
this.tipoMedicao = tipoMedicao;
}
public String getCapacidadeHidrometro() {
return capacidadeHidrometro;
}
public void setCapacidadeHidrometro(String capacidadeHidrometro) {
this.capacidadeHidrometro = capacidadeHidrometro;
}
public Date getDataInstalacao() {
return dataInstalacao;
}
public void setDataInstalacao(Date dataInstalacao) {
this.dataInstalacao = dataInstalacao;
}
public String getDecricaoAbreviadaImovel() {
return decricaoAbreviadaImovel;
}
public void setDecricaoAbreviadaImovel(String decricaoAbreviadaImovel) {
this.decricaoAbreviadaImovel = decricaoAbreviadaImovel;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public Integer getFaixaLeituraEsperadaInferior() {
return faixaLeituraEsperadaInferior;
}
public void setFaixaLeituraEsperadaInferior(Integer faixaLeituraEsperadaInferior) {
this.faixaLeituraEsperadaInferior = faixaLeituraEsperadaInferior;
}
public Integer getFaixaLeituraEsperadaSuperior() {
return faixaLeituraEsperadaSuperior;
}
public void setFaixaLeituraEsperadaSuperior(Integer faixaLeituraEsperadaSuperior) {
this.faixaLeituraEsperadaSuperior = faixaLeituraEsperadaSuperior;
}
public Integer getGrupoFaturamento() {
return grupoFaturamento;
}
public void setGrupoFaturamento(Integer grupoFaturamento) {
this.grupoFaturamento = grupoFaturamento;
}
public Integer getLeituraAnterior() {
return leituraAnterior;
}
public void setLeituraAnterior(Integer leituraAnterior) {
this.leituraAnterior = leituraAnterior;
}
public Integer getLeituraHidrometro() {
return leituraHidrometro;
}
public void setLeituraHidrometro(Integer leituraHidrometro) {
this.leituraHidrometro = leituraHidrometro;
}
public Integer getLocalidade() {
return localidade;
}
public void setLocalidade(Integer localidade) {
this.localidade = localidade;
}
public String getLocalInstalacao() {
return localInstalacao;
}
public void setLocalInstalacao(String localInstalacao) {
this.localInstalacao = localInstalacao;
}
public String getMarcaHidrometro() {
return marcaHidrometro;
}
public void setMarcaHidrometro(String marcaHidrometro) {
this.marcaHidrometro = marcaHidrometro;
}
public Integer getMatriculaOperador() {
return matriculaOperador;
}
public void setMatriculaOperador(Integer matriculaOperador) {
this.matriculaOperador = matriculaOperador;
}
public String getNomeCliente() {
return nomeCliente;
}
public void setNomeCliente(String nomeCliente) {
this.nomeCliente = nomeCliente;
}
public String getNumeroHidrometro() {
return numeroHidrometro;
}
public void setNumeroHidrometro(String numeroHidrometro) {
this.numeroHidrometro = numeroHidrometro;
}
public Integer getNumeroLote() {
return numeroLote;
}
public void setNumeroLote(Integer numeroLote) {
this.numeroLote = numeroLote;
}
public Integer getNumeroQuadra() {
return numeroQuadra;
}
public void setNumeroQuadra(Integer numeroQuadra) {
this.numeroQuadra = numeroQuadra;
}
public Integer getNumeroSubLote() {
return numeroSubLote;
}
public void setNumeroSubLote(Integer numeroSubLote) {
this.numeroSubLote = numeroSubLote;
}
public Integer getPerfilImovel() {
return perfilImovel;
}
public void setPerfilImovel(Integer perfilImovel) {
this.perfilImovel = perfilImovel;
}
public String getProtecaoHidrometro() {
return protecaoHidrometro;
}
public void setProtecaoHidrometro(String protecaoHidrometro) {
this.protecaoHidrometro = protecaoHidrometro;
}
public Integer getQuantidadeEconomias() {
return quantidadeEconomias;
}
public void setQuantidadeEconomias(Integer quantidadeEconomias) {
this.quantidadeEconomias = quantidadeEconomias;
}
public Integer getSetorComercial() {
return setorComercial;
}
public void setSetorComercial(Integer setorComercial) {
this.setorComercial = setorComercial;
}
public Integer getSituacaoLigacaoAgua() {
return situacaoLigacaoAgua;
}
public void setSituacaoLigacaoAgua(Integer situacaoLigacaoAgua) {
this.situacaoLigacaoAgua = situacaoLigacaoAgua;
}
public Integer getSituacaoLigacaoEsgoto() {
return situacaoLigacaoEsgoto;
}
public void setSituacaoLigacaoEsgoto(Integer situacaoLigacaoEsgoto) {
this.situacaoLigacaoEsgoto = situacaoLigacaoEsgoto;
}
public Integer getTipoMedicao() {
return tipoMedicao;
}
public void setTipoMedicao(Integer tipoMedicao) {
this.tipoMedicao = tipoMedicao;
}
public String getStringDataLeitura() {
return stringDataLeitura;
}
public void setStringDataLeitura(String stringDataLeitura) {
this.stringDataLeitura = stringDataLeitura;
}
public void gerarDadosImovel(String linha) throws NumberFormatException, StringIndexOutOfBoundsException{
this.setLocalidade(new Integer(linha.substring(0, 3)));
this.setSetorComercial(new Integer(linha.substring(3, 6)));
this.setNumeroQuadra(new Integer(linha.substring(6, 9)));
this.setNumeroLote(new Integer(linha.substring (9, 13).replace(" ", "")));
this.setNumeroSubLote(new Integer(linha.substring(13, 16).replace(" ", "")));
this.setTipoMedicao(new Integer(linha.substring(16, 17)));
this.setGrupoFaturamento(new Integer(linha.substring(17, 19)));
this.setMatriculaImovel(new Integer(linha.substring(19, 27)));
this.setPerfilImovel(new Integer(linha.substring(27,28)));
this.setNomeCliente(linha.substring(28, 53));
this.setEndereco(linha.substring (53, 103));
this.setMarcaHidrometro(linha.substring(103, 105));
this.setNumeroHidrometro(linha.substring(105, 115));
this.setCapacidadeHidrometro(linha.substring (115, 117));
this.setLocalInstalacao(linha.substring(117, 119));
StringBuffer dataInstalacao = new StringBuffer(linha.substring(119, 125));
this.setDataInstalacao(this.stringParaData(dataInstalacao.toString()));
this.setProtecaoHidrometro(linha.substring (125, 127));
this.setSituacaoLigacaoAgua(new Integer(linha.substring(127, 129)));
this.setSituacaoLigacaoEsgoto(new Integer(linha.substring(129, 131)));
this.setDecricaoAbreviadaImovel(linha.substring(131, 134));
this.setQuantidadeEconomias(new Integer(linha.substring(134, 137)));
this.setLeituraAnterior(new Integer(this.decrypt(linha.substring(137, 143))));
this.setFaixaLeituraEsperadaInferior(new Integer(this.decrypt(linha.substring(143, 149))));
this.setFaixaLeituraEsperadaSuperior(new Integer(this.decrypt(linha.substring(149,155))));
this.setCodigoRota(new Integer(linha.substring(155,161)));
this.setNumeroSequencialRota(new Integer(linha.substring(161,165)));
this.setMatriculaOperador(new Integer(linha.substring(165,173)));
this.setLeituraHidrometro(new Integer(linha.substring(173,179)));
this.setCodigoAnormalidade(new Integer(linha.substring(179,181)));
this.setStringDataLeitura(this.decrypt(linha.substring(181,187)));
this.setHoraLeituraCampo(this.decrypt(linha.substring(187,193)));
this.setIndicadorConfirmacaoLeitura(new Byte(linha.substring(193,194)));
this.setDataLeituraCampo(this.stringParaDataHora(this.getStringDataLeitura()+this.getHoraLeituraCampo()));
}
public String decrypt(String str) {
int tab[] = {77,110,70,114,90,100,86,103,111,75};
int i;
int j;
int value = 0;
int len = str.length();
String response = "";
for (i=0; i < len; i++) {
value = (int) str.charAt(i);
for (j = 0; j < 10; j++) {
if (value == tab[j]) {
response += String.valueOf(j).trim();
}
}
}
return response;
}
public Date stringParaData(String data) {
Date dataString = null;
try{
Calendar calendar = Calendar.getInstance();
char[] dataArray = data.toCharArray();
int dia = Integer.parseInt(dataArray[4] + "" + dataArray[5]);
int mes = Integer.parseInt(dataArray[2] + "" + dataArray[3]);
int ano =Integer.parseInt(dataArray[0] + "" + dataArray[1]);
calendar.set(Calendar.DAY_OF_MONTH, dia);
calendar.set(Calendar.MONTH, mes -1);
calendar.set(Calendar.YEAR, ano + 2000);
dataString = calendar.getTime();
if(dataString.after(new Date())){
calendar.set(Calendar.YEAR, ano + 1900);
dataString = calendar.getTime();
}
}catch (Exception e) {
return null;
}
return dataString;
}
public Date stringParaDataHora(String data){
Date dataString = null;
try{
Calendar calendar = Calendar.getInstance();
char[] dataArray = data.toCharArray();
int dia =Integer.parseInt(dataArray[0] + "" + dataArray[1]);
int mes = Integer.parseInt(dataArray[2] + "" + dataArray[3]);
int ano = Integer.parseInt(dataArray[4] + "" + dataArray[5]);
int hora = Integer.parseInt(dataArray[6] + "" + dataArray[7]);
int minuto = Integer.parseInt(dataArray[8] + "" + dataArray[9]);
int segundo = Integer.parseInt(dataArray[10] + "" + dataArray[11]);
calendar.set(Calendar.DAY_OF_MONTH, dia);
calendar.set(Calendar.MONTH, mes -1);
calendar.set(Calendar.YEAR, ano + 2000);
calendar.set(Calendar.HOUR_OF_DAY,hora);
calendar.set(Calendar.MINUTE,minuto);
calendar.set(Calendar.SECOND,segundo);
dataString = calendar.getTime();
if(calendar.get(Calendar.YEAR) > Util.getAno(new Date())){
calendar.set(Calendar.YEAR, ano + 1900);
dataString = calendar.getTime();
}
}catch (Exception e) {
return null;
}
return dataString;
}
public static String encrypt(String str) {
int tab[] = {77,110,70,114,90,100,86,103,111,75};
int i;
int value = 0;
int len = str.length();
String response = "";
for (i=0; i < len; i++) {
value = (int) str.charAt(i);
response += (char) tab[ (value - 48) ];
}
return response;
}
public Integer getCodigoAnormalidade() {
return codigoAnormalidade;
}
public void setCodigoAnormalidade(Integer anormalidade) {
this.codigoAnormalidade = anormalidade;
}
public Integer getMatriculaImovel() {
return matriculaImovel;
}
public void setMatriculaImovel(Integer imovel) {
this.matriculaImovel = imovel;
}
public Long getImei() {
return imei;
}
public void setImei(Long imei) {
this.imei = imei;
}
public Byte getIndicadorConfirmacaoLeitura() {
return indicadorConfirmacaoLeitura;
}
public void setIndicadorConfirmacaoLeitura(Byte indicador) {
this.indicadorConfirmacaoLeitura = indicador;
}
public Integer getCodigoRota() {
return codigoRota;
}
public void setCodigoRota(Integer codigoRota) {
this.codigoRota = codigoRota;
}
public Integer getNumeroSequencialRota() {
return numeroSequencialRota;
}
public void setNumeroSequencialRota(Integer numerosequencialRota) {
this.numeroSequencialRota = numerosequencialRota;
}
public String getInscricao() {
if(inscricao==null){
char separator = '.';
StringBuffer buffer = new StringBuffer();
buffer.append(this.zerosEsquerda(this.getLocalidade(),3));
buffer.append(separator);
buffer.append(this.zerosEsquerda(this.getSetorComercial(),3));
buffer.append(separator);
buffer.append(this.zerosEsquerda(this.getNumeroQuadra(),3));
buffer.append(separator);
buffer.append(this.zerosEsquerda(this.getNumeroLote(),4));
buffer.append(separator);
buffer.append(this.zerosEsquerda(this.getNumeroSubLote(),3));
this.inscricao = buffer.toString();
}
return this.inscricao;
}
private String zerosEsquerda(Integer valor, int tamanho){
String retorno = new String(valor.toString());
if(tamanho > retorno.length()){
for(int i =0; i<(tamanho - valor.toString().length());i++ ){
retorno = "0" + retorno;
}
}
return retorno;
}
public String getMsgImovelSuprimidoOuHidrometroRetirado() {
return msgImovelSuprimidoOuHidrometroRetirado;
}
public void setMsgImovelSuprimidoOuHidrometroRetirado(
String msgImovelSuprimidoOuHidrometroRetirado) {
this.msgImovelSuprimidoOuHidrometroRetirado = msgImovelSuprimidoOuHidrometroRetirado;
}
public boolean isNaoPermitirAlterar() {
return naoPermitirAlterar;
}
public void setNaoPermitirAlterar(boolean naoPermitirAlterar) {
this.naoPermitirAlterar = naoPermitirAlterar;
}
public ArquivoTextoRoteiroEmpresa getArquivoTextoRoteiroEmpresa() {
return arquivoTextoRoteiroEmpresa;
}
public void setArquivoTextoRoteiroEmpresa(
ArquivoTextoRoteiroEmpresa arquivoTextoRoteiroEmpresa) {
this.arquivoTextoRoteiroEmpresa = arquivoTextoRoteiroEmpresa;
}
public String getHoraLeituraCampo() {
return horaLeituraCampo;
}
public void setHoraLeituraCampo(String horaLeituraCampo) {
this.horaLeituraCampo = horaLeituraCampo;
}
public Date getDataLeituraCampo() {
return dataLeituraCampo;
}
public void setDataLeituraCampo(Date dataLeituraCampo) {
this.dataLeituraCampo = dataLeituraCampo;
}
public Date getDataLeituraCronograma() {
return dataLeituraCronograma;
}
public void setDataLeituraCronograma(Date dataLeituraCronograma) {
this.dataLeituraCronograma = dataLeituraCronograma;
}
}