Pessoal,
bom dia!
Estou tendo uma dificuldade em delimitar o processamento do meu programa dentro de um trecho de datas. exemplo: quero processar umas informações de uma data inicial até uma data final, porém não estou conseguindo.
Fiz akgumas tentativas, mas, se ele não entra em um LOOP infinito, pega todas as datas e não aceita a minha restrição pelas datas que quero.
Será que vocês poderiam em ajudar por favor ?
Obrigado,
Segue o meu código abaixo:
public class Principal extends javax.swing.JFrame {
private void processar(final String odate,final String odate1, final String ambiente, final String selecao, final String opcao, final int qtd){
final int dt_ini = Integer.parseInt(odate);
final int dt_fim = Integer.parseInt(odate1);
new Thread(new Runnable() {
public void run() {
String nomeArqFinal;
nomeArqFinal = "RESUMO" + "_" + ambiente + ".TXT";
String leitor = null; // -> variavel utilizada para percorrer o arquivo.
try{
// PROCESSO DE LEITURA DAS LOGs
File [] arquivos;
File dir = new File(opcao);
arquivos = dir.listFiles();
// LEITURA DOS ARQUIVOS.
for (int i = qtd; i < arquivos.length; i++){
FileInputStream fis = new FileInputStream(arquivos[i]);
InputStreamReader stream = new InputStreamReader(fis);
BufferedReader reader = new BufferedReader(stream);
// GRAVACAO DO ARQUIVO FINAL
FileWriter fwr1 = new FileWriter(selecao + nomeArqFinal ,true);
PrintWriter bw = new PrintWriter(fwr1);
// EFETUA A LEITURA DOS ARQUIVOS DO DIRETORIO.
txtArea.setText("Lendo o arquivo : " + " " + arquivos[i].getName() + "\n");
// ARRAYs PARA ARMAZENAR AS INFORMACOES
ArrayList<String> dadosArquivo = new ArrayList<String>(); // ENDOKs
ArrayList<String> errosArquivo = new ArrayList<String>(); // ABENDED
ArrayList<String> finalizado = new ArrayList<String>(); // JUNCAO DOS ARQUIVOS.
// LOOP PARA PERCORRER O ARQUIVO ATÈ O FIM DOS REGISTROS
while((leitor=reader.readLine() ) != null){
// SEPARACAO DO ARQUIVO EM COLUNAS
String[] novoArq = leitor.split(" ");
//***********************************************************************************************
// PROCESSO DE CAPTURA DOS ENDOK SELECIONADOS *
//***********************************************************************************************
do{
// LEITOR APENAS COM ENDOK
if(leitor.contains("ENDED")){
// CAPTURA DADOS APENAS DE ENDOK
if(novoArq.length < 18){ // CAPTURAR TUDO ANTES DA COLUNA 18
// FILTRA APENAS JOBS E JOBS CYCLICOS
if(novoArq[11].equals("JOB") || novoArq[11].equals("CYC")){
// CAPTURA JOBS APENAS COM 8 POSICOES E COM O ODATE ESPECIFICADO
if(novoArq[13].length() > 8){
// FILTRA APENAS ENDED OK
if(novoArq[15].contains("ENDED") && novoArq[16].contains("OK")){
// AGILIZA O PROCESSO DE CAPTURA DOS DADOS PARA INSERIR EM COLUNAS
StringBuilder linhaSaida = new StringBuilder();
//SISTEMA
linhaSaida.append(novoArq[13].substring(0,2)).append(" ");
// DATA DE PROCESSAMENTO
linhaSaida.append(novoArq[2]).append(" ");
// HORA
linhaSaida.append(novoArq[3]).append(" ");
// ODATE
linhaSaida.append(novoArq[4]).append(" ");
// JOB
linhaSaida.append(novoArq[13].substring(0,8)).append(" ");
// JOBID
linhaSaida.append(novoArq[13].split("/")[1]).append(" ");
// UID
linhaSaida.append(novoArq[14].substring(4,9)).append(" ");
// OCORRENCIAS
linhaSaida.append(novoArq[15] + " " + novoArq[16]);
// ADICIONA AS INFORMACOES NO ARRAY DE ENDOK
dadosArquivo.add(linhaSaida.toString());
}
}
}
}
}
//*************************************************************************************************************************
// PROCESSO DE CAPTURA DOS ABENDS SELECIONADOS *
//*************************************************************************************************************************
// CAPTURA APENAS AS INFORMACOES DOS ERROS
if(leitor.contains("ABENDED") || leitor.contains("FAILED") ||
leitor.contains("NOT CATLGD 2") || leitor.contains("UNEXPLA")){
// FILTRA APENAS JOBS COM 8 POSICOES
if(novoArq[13].length() > 8){
// AGILIZA O PROCESSO DE CAPTURA DOS DADOS PARA INSERIR EM COLUNAS
StringBuilder linhaSaida1 = new StringBuilder();
//SISTEMA
linhaSaida1.append(novoArq[13].substring(0,2)).append(" ");
// DATA DE PROCESSAMENTO
linhaSaida1.append(novoArq[2]).append(" ");
// HORA
linhaSaida1.append(novoArq[3]).append(" ");
// ODATE
linhaSaida1.append(novoArq[4]).append(" ");
// JOB
linhaSaida1.append(novoArq[13].substring(0,8)).append(" ");
// JOBID
linhaSaida1.append(novoArq[13].split("/")[1]).append(" ");
// UID
linhaSaida1.append(novoArq[14].substring(4,9)).append(" ");
// OCORRENCIAS
if (leitor.contains("UNEXPLA")){
linhaSaida1.append(novoArq[16] + " " + novoArq[18]);
} else if (leitor.contains("NOT CATLGD 2")){
linhaSaida1.append(novoArq[15] + " " + novoArq[16] + " " + novoArq[17] + " " + novoArq[18] + " " + novoArq[19]);
} else if (leitor.contains("FAILED")){
linhaSaida1.append(novoArq[15] + " " + novoArq[16] + " " + novoArq[17]);
} else if (leitor.contains("ABENDED")){
linhaSaida1.append(novoArq[15] + " " + novoArq[17]);
}
// ADICIONA AS INFORMACOES NO ARRAY DE ABEND
errosArquivo.add(linhaSaida1.toString());
}
}
}while(dt_ini < dt_fim); // CONDIÇÃO PARA AS DATAS
}//while
//*********************************************************************************************************************
// PROCESSO DE JUNCAO DOS ARQUVOS PARA CAPTURA DOS HORARIOS *
//*********************************************************************************************************************
// CRIADO O MAPA PARA ARMAZENAR DADOS PARA COMPARAÇÃO
Map<String, String> status = new HashMap<String, String>();
for (String linha : dadosArquivo) {
// SEPARA ENDOK POR COLUNAS
String [] partes = linha.split("\\s+");
// SETA UID E HORARIO ENDOK
status.put(partes[6], partes[2]);
}
for (String linha : errosArquivo) {
// SEPARA ABEND POR COLUNAS.
String[] partes = linha.split("\\s+");
//CAPTURA APENAS HORARIOS DOS JOBS ENDOK QUE ESTAO NO ABEND.
String statusJobId = status.get(partes[6]);
// AGILIZA O PROCESSO DE CAPTURA DOS DADOS PARA INSERIR EM COLUNAS
StringBuilder arq = new StringBuilder();
//SISTEMA
arq.append(partes[0]).append(" ");
//JOB
arq.append(partes[4]).append(" ");
//JOBID
arq.append(partes[5]).append(" ");
// HORA INICIAL
arq.append(partes[2].substring(0,2) + ":" + partes[2].substring(2,4)).append(" ");
// HORA FINAL
arq.append(statusJobId == null ? " " : statusJobId.substring(0,2) + ":" + statusJobId.substring(2,4)).append(" ");
//OCORRENCIA
if(linha.contains("FAILED")){
arq.append(partes[7]).append(" ").append("JCL").append(" ").append("ERROR").append(" ");
}
else if(linha.contains("NOT")){
arq.append(partes[7] + " " + partes[8]).append(" ").append("2").append(" ").append("ON").append(" ").append("DSNAME").append(" ");
}
else if(linha.contains("ABENDED")){
arq.append(partes[7] + " " + partes[8]).append(" ");
}
else if(linha.contains("COND")){
arq.append(partes[7] + " " + partes[8]).append(" ");
}
//ODATE
arq.append(partes[3]).append(" ");
//DT PROCESSAMENTO
arq.append(partes[1]).append(" ");
// ADICIONA DO ARRAY FINALIZADO.
finalizado.add(arq.toString());
}// 2 FOR
// GRAVA NO ARQUIVO DE SAIDA O ARQUIVO FINALIZADO
for(String dados : finalizado){
bw.println(dados);
}
// FECHA OS MODULOS DE LEITURA E ESCRITA
fis.close(); stream.close(); reader.close();
fwr1.close(); bw.close();
}// For
// MENSAGEM DE FINALIZACAO DO PROCESSO
txtArea.setText("- PROCESSO FINALIZADO" + "\n" + "- ARQUIVO :" + " "
+ nomeArqFinal + "\n" + "- SALVO NA PASTA :" + " " + selecao);