package gcom.gui.relatorio.cadastro.imovel;
import gcom.gui.ActionServletException;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.cadastro.imovel.RelatorioBoletimCadastro;
import gcom.relatorio.cadastro.imovel.RelatorioBoletimCadastroBean;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.Util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class GerarBoletimCadastroAction extends ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("exibirGerarBoletimCadastro");
DiskFileUpload upload = new DiskFileUpload();
List items = null;
try {
items = upload.parseRequest(httpServletRequest);
this.getSessao(httpServletRequest).setAttribute("arquivo",items);
} catch (FileUploadException e) {
items = (List) this.getSessao(httpServletRequest).getAttribute("arquivo");
if(items == null){
throw new ActionServletException("erro.sistema", e);
}
}
Collection colecaoBoletimCadastro =
this.gerarColecaoBoletimCadastro(items);
FileItem item = (FileItem) Util.retonarObjetoDeColecao(items);
String nomeArquivo = this.tratarNomeArquivo(item.getName());
nomeArquivo = nomeArquivo.replace(".txt","");
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
RelatorioBoletimCadastro relatorio =
new RelatorioBoletimCadastro(this.getUsuarioLogado(httpServletRequest));
relatorio.addParametro("colecaoBoletimCadastro", colecaoBoletimCadastro);
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorio.addParametro("tipoFormatoRelatorio",Integer.parseInt(tipoRelatorio));
relatorio.addParametro("nomeArquivo",nomeArquivo);
retorno =
processarExibicaoRelatorio(relatorio, tipoRelatorio, httpServletRequest,
httpServletResponse, actionMapping);
return retorno;
}
private Collection gerarColecaoBoletimCadastro(List items){
Collection retorno = new ArrayList();
FileItem item = null;
String nomeItem = null;
// Parse the request
try {
Iterator iter = items.iterator();
while (iter.hasNext()) {
item = (FileItem) iter.next();
// verifica se n�o � diretorio
if (!item.isFormField()) {
// coloca o nome do item para maiusculo
nomeItem = item.getName().toUpperCase();
// compara o final do nome do arquivo � .txt
if (nomeItem.endsWith(".TXT")) {
// abre o arquivo
InputStreamReader reader = new InputStreamReader(item.getInputStream());
BufferedReader buffer = new BufferedReader(reader);
// cria uma variavel do tipo boolean
boolean eof = false;
RelatorioBoletimCadastroBean relatorioBean = null;
// enquanto a variavel for false
while (!eof) {
// pega a linha do arquivo
String linhaLida = buffer.readLine();
// se for a ultima linha do arquivo
if (linhaLida == null || linhaLida.trim().length() == 0) {
// seta a variavel boolean para true
eof = true;
} else {
relatorioBean = new RelatorioBoletimCadastroBean();
//--Dados do Cliente Proprietario--
//1-Numero Documento Referencia - Tam 8
relatorioBean.setNumeroDocumentoReferencia(linhaLida.substring(0, 8).trim());
//2-Codigo do Cliente Proprietario - Tam 9
relatorioBean.setCodigoClienteProprietario(linhaLida.substring(8, 17).trim());
//3-Nome do Cliente Proprietario - Tam 23
relatorioBean.setNomeClienteProprietario(linhaLida.substring(17, 40).trim());
//4-Tipo do Cliente Proprietario - Tam 2
relatorioBean.setTipoClienteProprietario(linhaLida.substring(40, 42).trim());
//5-Cpf do Cliente Proprietario - Tam 14
relatorioBean.setCpfCnpjProprietario(linhaLida.substring(42, 56).trim());
//6-Rg do Cliente Proprietario - Tam 13
relatorioBean.setRgProprietario(linhaLida.substring(56, 69).trim());
//7-Data de Emissao do Cliente Proprietario - Tam 8
relatorioBean.setDataEmissaoProprietario(
Util.converterDataSemBarraParaDataComBarra(linhaLida.substring(69, 77).trim()));
//8-Orgao Expedidor do Cliente Proprietario - Tam 4
relatorioBean.setOrgaoExpedidorProprietario(linhaLida.substring(77, 81).trim());
//9-Unidade Federacao do Cliente Proprietario - Tam 2
relatorioBean.setUnidadeFederacaoProprietario(linhaLida.substring(81, 83).trim());
//10-Data do Nascimento do Cliente Proprietario - Tam 8
relatorioBean.setDataNascimentoProprietario(
Util.converterDataSemBarraParaDataComBarra(linhaLida.substring(83, 91).trim()));
//11-Profissao do Cliente Proprietario - Tam 18
relatorioBean.setProfissaoProprietario(linhaLida.substring(91, 109).trim());
//12-Sexo do Cliente Proprietario - Tam 1
relatorioBean.setSexoProprietario(linhaLida.substring(109, 110).trim());
//13-Nome da Mae do Cliente Proprietario - Tam 32
relatorioBean.setNomeMaeProprietario(linhaLida.substring(110, 142).trim());
//14-Indicador de Uso do Cliente Proprietario - Tam 1
relatorioBean.setIndicadorUsoProprietario(linhaLida.substring(142, 143).trim());
//15-Tipo de endereco - Tam 1
relatorioBean.setTipoEnderecoProprietario(linhaLida.substring(143, 144).trim());
//16-Codigo do logradouro do Cliente Proprietario - Tam 9
relatorioBean.setCodigoLogradouroProprietario(linhaLida.substring(144, 153).trim());
//17-Endere�o do Cliente Proprietario - Tam 60
relatorioBean.setEnderecoProprietario(linhaLida.substring(153, 213).trim());
//18-Cep do Cliente Proprietario - Tam 8
relatorioBean.setCepProprietario(linhaLida.substring(213, 221).trim());
//19-Bairro do Cliente Proprietario - Tam 3
relatorioBean.setBairroProprietario(linhaLida.substring(221, 224).trim());
//20-Referencia do Cliente Proprietario - Tam 1
relatorioBean.setReferenciaProprietario(linhaLida.substring(224, 225).trim());
//21-Numero do Imovel do Cliente Proprietario - Tam 5
relatorioBean.setNumeroImovelProprietario(linhaLida.substring(225, 230).trim());
//22-Complemento do Cliente Proprietario - Tam 19
relatorioBean.setComplementoProprietario(linhaLida.substring(230, 249).trim());
//23-Tipo Telefone do Cliente Proprietario 1 - Tam 1
relatorioBean.setTipoTelefone1Proprietario(linhaLida.substring(249, 250).trim());
//24-DDD do Cliente Proprietario 1 - Tam 2
relatorioBean.setDdd1Proprietario(linhaLida.substring(250, 252).trim());
//25-Numero do Telefone do Cliente Proprietario 1 - Tam 8
relatorioBean.setNumero1TelefoneProprietario(linhaLida.substring(252, 260).trim());
//26-Ramal do Cliente Proprietario 2 - Tam 4
relatorioBean.setRamal1Proprietario(linhaLida.substring(260, 264).trim());
//27-Tipo Telefone do Cliente Proprietario 2 - Tam 1
relatorioBean.setTipoTelefone1Proprietario(linhaLida.substring(264, 265).trim());
//28-DDD do Cliente Proprietario 2 - Tam 2
relatorioBean.setDdd2Proprietario(linhaLida.substring(265, 267).trim());
//29-Numero do Telefone do Cliente Proprietario 2 - Tam 8
relatorioBean.setNumero2TelefoneProprietario(linhaLida.substring(267, 275).trim());
//30-Ramal do Cliente Proprietario 2 - Tam 4
relatorioBean.setRamal2Proprietario(linhaLida.substring(275, 279).trim());
//Aumenta em 8 no espa�o seguindo o caso de uso
//--Dados do Cliente Usuario--
//31-Codigo do Cliente Usuario - Tam 9
relatorioBean.setCodigoClienteUsuario(linhaLida.substring(287, 296).trim());
//32-Nome do Cliente Usuario - Tam 23
relatorioBean.setNomeClienteUsuario(linhaLida.substring(296, 319).trim());
//33-Tipo do Cliente Usuario - Tam 2
relatorioBean.setTipoClienteUsuario(linhaLida.substring(319, 321).trim());
//34-Cpf do Cliente Usuario - Tam 14
relatorioBean.setCpfCnpjUsuario(linhaLida.substring(321, 335).trim());
//35-Rg do Cliente Usuario - Tam 13
relatorioBean.setRgUsuario(linhaLida.substring(335, 348).trim());
//36-Data de Emissao do Cliente Usuario - Tam 8
relatorioBean.setDataEmissaoUsuario(
Util.converterDataSemBarraParaDataComBarra(linhaLida.substring(348, 356).trim()));
//37-Orgao Expedidor do Cliente Usuario - Tam 4
relatorioBean.setOrgaoExpedidorUsuario(linhaLida.substring(356, 360).trim());
//38-Unidade Federacao do Cliente Usuario - Tam 2
relatorioBean.setUnidadeFederacaoUsuario(linhaLida.substring(360, 362).trim());
//39-Data do Nascimento do Cliente Usuario - Tam 8
relatorioBean.setDataNascimentoUsuario(
Util.converterDataSemBarraParaDataComBarra(linhaLida.substring(362, 370).trim()));
//40-Profissao do Cliente Usuario - Tam 18
relatorioBean.setProfissaoUsuario(linhaLida.substring(370, 388).trim());
//41-Sexo do Cliente Usuario - Tam 1
relatorioBean.setSexoUsuario(linhaLida.substring(388, 389).trim());
//42-Nome da Mae do Cliente Usuario - Tam 32
relatorioBean.setNomeMaeUsuario(linhaLida.substring(389, 421).trim());
//43-Indicador de Uso do Cliente Usuario - Tam 1
relatorioBean.setIndicadorUsoUsuario(linhaLida.substring(421, 422).trim());
//44-Tipo de endereco - Tam 1
relatorioBean.setTipoEnderecoUsuario(linhaLida.substring(422, 423).trim());
//45-Codigo do logradouro do Cliente Usuario - Tam 9
relatorioBean.setCodigoLogradouroUsuario(linhaLida.substring(423, 432).trim());
//46-Endere�o do Cliente Usuario - Tam 60
relatorioBean.setEnderecoUsuario(linhaLida.substring(432, 492).trim());
//47-Cep do Cliente Usuario - Tam 8
relatorioBean.setCepUsuario(linhaLida.substring(492, 500).trim());
//48-Bairro do Cliente Usuario - Tam 3
relatorioBean.setBairroUsuario(linhaLida.substring(500, 503).trim());
//49-Referencia do Cliente Usuario - Tam 1
relatorioBean.setReferenciaUsuario(linhaLida.substring(503, 504).trim());
//50-Numero do Imovel do Cliente Usuario - Tam 5
relatorioBean.setNumeroImovelUsuario(linhaLida.substring(504, 509).trim());
//51-Complemento do Cliente Usuario - Tam 19
relatorioBean.setComplementoUsuario(linhaLida.substring(509, 528).trim());
//52-Tipo Telefone do Cliente Usuario 1 - Tam 1
relatorioBean.setTipoTelefone1Usuario(linhaLida.substring(528, 529).trim());
//53-DDD do Cliente Usuario 1 - Tam 2
relatorioBean.setDdd1Usuario(linhaLida.substring(529, 531).trim());
//54-Numero do Telefone do Cliente Usuario 1 - Tam 8
relatorioBean.setNumero1TelefoneUsuario(linhaLida.substring(531, 539).trim());
//55-Ramal do Cliente Usuario 2 - Tam 4
relatorioBean.setRamal1Usuario(linhaLida.substring(539, 543).trim());
//56-Tipo Telefone do Cliente Usuario 2 - Tam 1
relatorioBean.setTipoTelefone1Usuario(linhaLida.substring(543, 544).trim());
//57-DDD do Cliente Usuario 2 - Tam 2
relatorioBean.setDdd2Usuario(linhaLida.substring(544, 546).trim());
//58-Numero do Telefone do Cliente Usuario 2 - Tam 8
relatorioBean.setNumero2TelefoneUsuario(linhaLida.substring(546, 554).trim());
//59-Ramal do Cliente Usuario 2 - Tam 4
relatorioBean.setRamal2Usuario(linhaLida.substring(554, 558).trim());
//--adciona mais 8 espa�os
//----Cadastro Do Imovel------
//60-Movimento - Tam 1
relatorioBean.setMovimentoImovel(linhaLida.substring(566, 567).trim());
//61-Inscricao Anterior - Tam 16
relatorioBean.setInscricaoAnteriorImovel(linhaLida.substring(567, 583).trim());
//62-Matricula do Imovel - Tam 9
relatorioBean.setMatriculaImovel(linhaLida.substring(583, 592).trim());
//63-Codigo do Cliente Proprietario - Tam 12
//64-Inscricao Atual - Tam 16
relatorioBean.setRamal2Usuario(linhaLida.substring(604, 620).trim());
//65-Numero Moradores - Tam 4
relatorioBean.setNumeroMoradores(linhaLida.substring(620, 624).trim());
//66-Nome da Conta - Tam 1
relatorioBean.setNomeConta(linhaLida.substring(624, 625).trim());
//67-Codigo do Cliente Usuario - Tam 12
//68-Codigo do Logradouro - Tam 9
relatorioBean.setCodigoLogradouroImovel(linhaLida.substring(637, 646).trim());
//69-Endereco do Imovel - Tam 60
relatorioBean.setEnderecoImovel(linhaLida.substring(646, 706).trim());
//70-CEP - Tam 8
relatorioBean.setCepImovel(linhaLida.substring(706, 714).trim());
//71-Bairro - Tam 3
relatorioBean.setBairroImovel(linhaLida.substring(714, 717).trim());
//72-Referencia - Tam 1
relatorioBean.setReferenciaImovel(linhaLida.substring(717, 718).trim());
//73-Numero do Imovel - Tam 5
relatorioBean.setNumeroImovel(linhaLida.substring(718, 723).trim());
//74-Complemento - Tam 19
relatorioBean.setComplementoImovel(linhaLida.substring(723, 742).trim());
if (linhaLida.length() > 1021) {
//75-SubCategoria 1 - Tam 3
relatorioBean.setSubCategoria1(linhaLida.substring(1021, 1024).trim());
//77-SubCategoria 2 - Tam 3
relatorioBean.setSubCategoria2(linhaLida.substring(1024, 1027).trim());
//79-SubCategoria 3 - Tam 3
relatorioBean.setSubCategoria3(linhaLida.substring(1027, 1030).trim());
//81-SubCategoria 4 - Tam 3
relatorioBean.setSubCategoria4(linhaLida.substring(1030, 1033).trim());
//83-SubCategoria 5 - Tam 3
relatorioBean.setSubCategoria5(linhaLida.substring(1033, 1036).trim());
//85-SubCategoria 6 - Tam 3
relatorioBean.setSubCategoria6(linhaLida.substring(1036, 1039).trim());
} else {
//75-SubCategoria 1 - Tam 2
relatorioBean.setSubCategoria1(linhaLida.substring(742, 744).trim());
//77-SubCategoria 2 - Tam 2
relatorioBean.setSubCategoria2(linhaLida.substring(748, 750).trim());
//79-SubCategoria 3 - Tam 2
relatorioBean.setSubCategoria3(linhaLida.substring(754, 756).trim());
//81-SubCategoria 4 - Tam 2
relatorioBean.setSubCategoria4(linhaLida.substring(760, 762).trim());
//83-SubCategoria 5 - Tam 2
relatorioBean.setSubCategoria5(linhaLida.substring(766, 768).trim());
//85-SubCategoria 6 - Tam 2
relatorioBean.setSubCategoria6(linhaLida.substring(772, 774).trim());
}
//76-Quantidade de Economia 1 - Tam 4
relatorioBean.setQuantidadeEconomias1(linhaLida.substring(744, 748).trim());
//78-Quantidade de Economia 2 - Tam 4
relatorioBean.setQuantidadeEconomias2(linhaLida.substring(750, 754).trim());
//80-Quantidade de Economia 3 - Tam 4
relatorioBean.setQuantidadeEconomias3(linhaLida.substring(756, 760).trim());
//82-Quantidade de Economia 4 - Tam 4
relatorioBean.setQuantidadeEconomias4(linhaLida.substring(762, 766).trim());
//84-Quantidade de Economia 5 - Tam 4
relatorioBean.setQuantidadeEconomias5(linhaLida.substring(768, 772).trim());
//86-Quantidade de Economia 6 - Tam 4
relatorioBean.setQuantidadeEconomias6(linhaLida.substring(774, 778).trim());
//87-Hotel Qtd. Ap. - Tam 6
relatorioBean.setQuantidadeApHotel(linhaLida.substring(778, 784).trim());
//88-Area Construida - Tam 6
relatorioBean.setAreaConstruida(linhaLida.substring(784, 790).trim());
//89-Situacao Ligacao Agua - Tam 1
relatorioBean.setSituacaoAgua(linhaLida.substring(790, 791).trim());
//90-Diametro - Tam 1
relatorioBean.setDiamentroAgua(linhaLida.substring(791, 792).trim());
//91-Material - Tam 1
relatorioBean.setMateriaAgua(linhaLida.substring(792, 793).trim());
//92-Volume Inferior - Tam 1
relatorioBean.setVolumeInferior(linhaLida.substring(793, 794).trim());
//93-Volume Superior - Tam 1
relatorioBean.setVolumeSuperior(linhaLida.substring(794, 795).trim());
//94-Volume Piscina - Tam 1
relatorioBean.setVolumePiscina(linhaLida.substring(795, 796).trim());
//95-Jardim - Tam 1
relatorioBean.setJardim(linhaLida.substring(796, 797).trim());
//96-Pavimenta��o Cal�ada - Tam 2
relatorioBean.setPavimentacaoCalcada(linhaLida.substring(797, 799).trim());
//97-Pavimenta��o Rua - Tam 2
relatorioBean.setPavimentacaoRua(linhaLida.substring(799, 801).trim());
//98-Fonte Abastecimento - Tam 1
relatorioBean.setFonteAbastecimento(linhaLida.substring(801, 802).trim());
//99-Po�o - Tam 1
relatorioBean.setPoco(linhaLida.substring(802, 803).trim());
//100-Numero de Pontos - Tam 4
relatorioBean.setNumeroPontos(linhaLida.substring(803, 807).trim());
//101-Situacao Esgoto - Tam 1
relatorioBean.setSituacaoEsgoto(linhaLida.substring(807, 808).trim());
//102-Diametro - Tam 1
relatorioBean.setDiamentroEsgoto(linhaLida.substring(808, 809).trim());
//103-Material - Tam 1
relatorioBean.setMateriaAgua(linhaLida.substring(809, 810).trim());
//104-Perfil do Imovel - Tam 1
relatorioBean.setPerfilImovel(linhaLida.substring(810, 811).trim());
//105-Despejo - Tam 1
relatorioBean.setPerfilImovel(linhaLida.substring(811, 812).trim());
//106-Leitura Inicial - Tam 6
relatorioBean.setLeituraInicial(linhaLida.substring(812, 818).trim());
//107-Capacidade Hidrometro - Tam 2
relatorioBean.setCapacidade(linhaLida.substring(818, 820).trim());
//108-Marca Hidrometro - Tam 2
relatorioBean.setMarca(linhaLida.substring(820, 822).trim());
//109-Local Hidrometro - Tam 2
relatorioBean.setLocal(linhaLida.substring(822, 824).trim());
//110-Prote��o Hidrometro - Tam 1
relatorioBean.setProtecao(linhaLida.substring(824, 825).trim());
//111-Cavalete Hidrometro - Tam 1
relatorioBean.setCavalete(linhaLida.substring(825, 826).trim());
//Numero do Iptu - Tam 26
//Contrato Cia Eletricidade - Tam 10
//112-Codigo Rota - Tam 7
relatorioBean.setCodigoRota(linhaLida.substring(862, 869).trim());
//113-Sequencial Rota - Tam 8
relatorioBean.setSequencialRota(linhaLida.substring(869, 877).trim());
//114-Valor Debito - Tam 11
relatorioBean.setValorDebitos(linhaLida.substring(877, 888).trim());
//115-Descri��o Abreviada - Tam 3
relatorioBean.setDescricaoAbreviadaPrincipalCategoria(linhaLida.substring(888, 891).trim());
retorno.add(relatorioBean);
}
}//fim do while eof
} else {
throw new ActionServletException("atencao.tipo_importacao.nao_txt");
}
}
}
} catch (IOException ex) {
throw new ActionServletException("erro.importacao.nao_concluida");
}
return retorno;
}
public String tratarNomeArquivo(String caminho) {
if (caminho.indexOf("\\") != -1){
caminho = caminho.substring(caminho.lastIndexOf("\\") + 1);
}
return caminho;
}
}