//N�mero de registros com org�o = ""
//N�mero de registros com org�o = "Sem correspondente"
//Se abortar exibir linha completa do registro
//Carrega a estrutura padr�o para importa��o dos itens
EstruturaDao estruturaDao = new EstruturaDao(request);
EstruturaEtt estruturaEttPadrao = estruturaDao.getEstruturaEttByNome(NOME_ESTRUTURA_PADRAO);
if (estruturaEttPadrao == null){
throw new ECARException("Estrutura \"" + NOME_ESTRUTURA_PADRAO + "\" n�o cadastrada.");
}
ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(request);
HashMap hashMapItensPais = new HashMap();
String caminhoArquivoEntrada = configuracaoCfg.getRaizUpload() + "/importacaoDadosPacInter/empreendimentos_copa2014_UF_IBGE.csv";
String caminhoArquivoSaida = configuracaoCfg.getRaizUpload() + "/importacaoDadosPacInter/Rejeitados-PACInter-empreendimentos.csv";
FileOutputStream arquivoSaida = new FileOutputStream(caminhoArquivoSaida);
FileInputStream file = new FileInputStream(caminhoArquivoEntrada);
InputStreamReader inputStream = new InputStreamReader(file, Dominios.ENCODING_DEFAULT);
BufferedReader in = new BufferedReader (inputStream);
int countRegistrosArquivo = 0;
int countRegistrosImportados = 0;
int countRegistrosRejeitadosPorUF = 0;
HashMap hashMapRegistrosPorCidadeArquivo = new HashMap();
HashMap hashMapRegistrosPorCidadeImportados = new HashMap();
String linha="";
String cabecalho = "";
if ((cabecalho = in.readLine()) != null){
validarSequenciaCamposCabecalho(cabecalho);
arquivoSaida.write((cabecalho + ";\"motivo_rejeicao\"\n").getBytes(Dominios.ENCODING_DEFAULT));
arquivoSaida.flush();
while ((linha=in.readLine()) != null) {
if (linha == null || linha.trim().equals(STRING_VAZIO)){
continue;
}
countRegistrosArquivo++;
String[] campos = linha.split(";");
if (campos.length < QUANTIDADE_CAMPOS_LINHA){
arquivoSaida.write((linha + ";Quantidade de campos da linha diferente da esperada " + QUANTIDADE_CAMPOS_LINHA + "\n").getBytes(Dominios.ENCODING_DEFAULT));
arquivoSaida.flush();
continue;
}
/*
Mapeamento dos campos do arquivo empreendimentos.csv
C�digo - idn_empreendimento - siglaIett
Nome - dsc_titulo - nomeIett
Descri��o - dsc_descricao - descricaoR2
Data de In�cio - dat_inicio_empreendimento - dataInicioIett
Data de T�rmino - dat_conclusao_original - dataTerminoIett
Org�o Respons�vel - dsc_executor_controle - orgaoOrgByCodOrgaoResponsavel1Iett
Valor Previsto - custo - valPrevistoFuturoIett
Situa��o - dsc_estagio (ser� considerado valor fixo 'Importado do PACInter') - situacaoSit
Tipo - dsc_tipo_empreendimento - descricaoR4
Sub-Tipo - dsc_subtipo - descricaoR5
C�digo da UF IBGE - (cod_uf_ibge) - descricao Reserva 1 em Cidade da Copa
*/
String codItemExterno = formatarStringSemAspas(campos[0].trim());
String nome = formatarStringSemAspas(campos[1].trim());
String descricao = formatarStringSemAspas(campos[2].trim());
String dataInicio = formatarStringSemAspas(campos[3].trim());
String dataTermino = formatarStringSemAspas(campos[4].trim());
String orgaoResponsavel = formatarStringSemAspas(campos[5].trim());
String valorPrevisto = formatarStringSemAspas(campos[6].trim());
//A princ�pio a situa��o n�o ser� importada
//ser� usada a situa��o padr�o "Importado do PACInter"
String situacao = formatarStringSemAspas(campos[7].trim());
String tipoEmpreendimento = formatarStringSemAspas(campos[8].trim()); //descricaoR4
String subTipoEmpreendimento = formatarStringSemAspas(campos[9].trim()); //descricaoR5
String codUFIBGE = formatarStringSemAspas(campos[10].trim());
if (hashMapRegistrosPorCidadeArquivo.containsKey(codUFIBGE)){
Integer qtdArquivos = (Integer) hashMapRegistrosPorCidadeArquivo.get(codUFIBGE);
qtdArquivos = qtdArquivos + 1;
hashMapRegistrosPorCidadeArquivo.put(codUFIBGE, qtdArquivos);
} else {
hashMapRegistrosPorCidadeArquivo.put(codUFIBGE, new Integer(1));
}
System.out.println("Lendo linha: " + countRegistrosArquivo + ".\n ID: " + codItemExterno + "\n");
//Valida��es
//valida se o c�digo do PACInter foi informado no arquivo
if (codItemExterno == null || codItemExterno.equals(STRING_VAZIO)){
arquivoSaida.write((linha + ";C�digo do Item no PACInter (idn_empreendimento) n�o informado\n").getBytes(Dominios.ENCODING_DEFAULT));
arquivoSaida.flush();
continue;
}
//valida�ao se o item j� foi registrado no e-car (validar pelo codItemExterno).
//se j� foi registrado, passa para o pr�ximo item
if (itemEstruturaDao.getItemEstruturaBySiglaDescricaoR1Avo(codItemExterno, codUFIBGE) != null){
continue;
}
Date dataInicioDate = null;
//valida se data de in�cio passada est� no formato esperado
if (dataInicio != null && !dataInicio.equals(STRING_VAZIO)){
dataInicioDate = Data.parseDate(dataInicio, MASCARA_DATA);
if (dataInicioDate == null){
arquivoSaida.write((linha + ";Data de In�cio (dat_inicio_empreendimento) inv�lida\n").getBytes(Dominios.ENCODING_DEFAULT));
arquivoSaida.flush();
continue;
}
}
Date dataTerminoDate = null;
//valida se data termino passada est� no formato esperado
if (dataTermino != null && !dataTermino.equals(STRING_VAZIO)){
dataTerminoDate = Data.parseDate(dataTermino, MASCARA_DATA);
if (dataTerminoDate == null){
arquivoSaida.write((linha + ";Data de T�rmino (dat_conclusao_original) inv�lida\n").getBytes(Dominios.ENCODING_DEFAULT));
arquivoSaida.flush();
continue;
} else {
//valida se a data de �nicio � posterior a data de termino
if (dataInicioDate != null && dataInicioDate.after(dataTerminoDate)){
arquivoSaida.write((linha + ";Data de T�rmino (dat_conclusao_original) inferior a Data de In�cio (dat_inicio_empreendimento)\n").getBytes(Dominios.ENCODING_DEFAULT));
arquivoSaida.flush();
continue;
}
}
}
BigDecimal valorPrevistoFormatado = null;
if (valorPrevisto != null && !valorPrevisto.equals(STRING_VAZIO)) {
if (!Util.ehValor(valorPrevisto)){
arquivoSaida.write((linha + ";O Valor previsto (custo) n�o est� no formato 0.00\n").getBytes(Dominios.ENCODING_DEFAULT));
arquivoSaida.flush();
continue;
} else {
valorPrevistoFormatado = new BigDecimal(Double.valueOf(valorPrevisto).doubleValue());
if (valorPrevistoFormatado.doubleValue() < 0){
arquivoSaida.write((linha + ";O Valor previsto (custo) n�o pode ser menor que zero\n").getBytes(Dominios.ENCODING_DEFAULT));
arquivoSaida.flush();
continue;
}
}
}
if (codUFIBGE == null || codUFIBGE.equals(STRING_VAZIO)){
arquivoSaida.write((linha + ";C�digo da cidade da Copa (idn_municipio) n�o informado\n").getBytes(Dominios.ENCODING_DEFAULT));
arquivoSaida.flush();
continue;
}
//Cria o item e seta os valores
ItemEstruturaIett iett = new ItemEstruturaIett();
iett.setEstruturaEtt(estruturaEttPadrao);
ItemEstruturaIett itemEstruturaIettPai = null;
if (hashMapItensPais.containsKey(codUFIBGE)){
itemEstruturaIettPai = (ItemEstruturaIett) hashMapItensPais.get(codUFIBGE);
} else {
itemEstruturaIettPai = itemEstruturaDao.getItemEstruturaIett(codUFIBGE, estruturaEttPadrao.getEstruturaEtt().getCodEtt(), NOME_ITEM_PAI);
hashMapItensPais.put(codUFIBGE, itemEstruturaIettPai);
}
if (itemEstruturaIettPai == null){
arquivoSaida.write((linha + ";N�o foi poss�vel identificar o item " + NOME_ITEM_PAI + " para a UF da Cidade da Copa (cod_uf_ibge)\n").getBytes(Dominios.ENCODING_DEFAULT));