Delimitar execução do programa por uma data específica

1 resposta
brunosardao

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);

1 Resposta

brunosardao

Alguém poderia dar uma força??..ao menos explicando o que devo fazer para que de certo esta minha duvida ?

obrigado

Criado 10 de março de 2012
Ultima resposta 11 de mar. de 2012
Respostas 1
Participantes 1