JProgressBar Mostrando Progresso de um método de Backup

0 respostas
F

Olá a todos amigos do fórum GUJ…

Estou querendo fazer o seguinte:
Fiz um método para executar o Backup da base de dados de um Sistemas Desktop e
gostaria de mostar o andamento desse backup em uma JProgressBar.

Se alguem poder quebrar essa eu fico agradecido desde já;…

abrçs a todos.

P.S: to postando os codigo do metodo de backup e o que ja fiz com a progressBar…

Esse é o metodo de backup.

public void backup()       
{ 
   pegaData();
   
   if(cScaminho.isSelected())
    {
      caminhoArquivo = tfCaminhoArquivo.getText(); 
     // JOptionPane.showMessageDialog(null, caminhoArquivo);
    }
   else
    {
      caminhoArquivo = caminhoPadrao;   
     // JOptionPane.showMessageDialog(null, caminhoArquivo);
    }
   
   if(cSNome.isSelected())
    {
      nomeArquivo = tfNomeArquivo.getText();  
     // JOptionPane.showMessageDialog(null, nomeArquivo);
    }
   else
    {
      nomeArquivo = nomePadrao; 
     // JOptionPane.showMessageDialog(null, nomeArquivo);
    }
    
  String ip = null;
  String snh = "root";  
  String banco ="db_processos_2011";  
  File diretorio = new File(caminhoArquivo+"/SDO-Backup");  
  File arquivo = new File(caminhoArquivo+"/SDO-Backup/"+nomeArquivo+".sql");  
  Boolean snbkp = true;  
  // Cria diretório  
  if(!diretorio.isDirectory()) new File(caminhoArquivo+"/SDO-Backup").mkdir();  
  // Cria Arquivo de Backup  
  try {  
      if (arquivo.isFile()){   
          if(JOptionPane.showConfirmDialog(null,"Ja foi criado backup hoje, deseja substituir ?","Backup ja existe",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION)  
          {   
              arquivo.delete();  
              snbkp = true;  
          }  
          else  
          {  
              snbkp = false;  
          }   
      }  
            
      if(snbkp==true)  
      {   
  
          Process proc = 
                  Runtime.getRuntime().exec("cmd /c mysqldump -uroot -p"+snh+" -h "+ip+" "+banco+" --result-file="+caminhoArquivo+banco+".sql"); proc.waitFor();  
        
           
          String comando = "C:\\Arquivos de Programas\\MySQL\\MySQL Server 5.0\\bin\\mysqldump";  
            ProcessBuilder pb = new ProcessBuilder(comando, "--user=root",  
                    "--password="+snh, banco, "--result-file="+caminhoArquivo+"/SDO-Backup/"+nomeArquivo+".sql");  
            pb.start();  
          //  atividade();
          int res = 0;//proc.exitValue();  
        
      if (res == 0) 
      {
          JOptionPane.showMessageDialog(null,"Backup criado com Sucesso !");  
          controle = 1;
      }
      else  {  
          JOptionPane.showMessageDialog(null,"Falha ao criar Backup. \n Verifique as configurações ou entre em contato com o suporte!",  
                  "Erro ao criar backup", JOptionPane.ERROR_MESSAGE);  
          }   
      }  
  }  
  catch (IOException ex) {  
     
      JOptionPane.showMessageDialog(null,"Erro na criação do Backup !" + ex);  
      controle = 0;
  } catch(Exception err){  
        
      JOptionPane.showMessageDialog(null,"Erro na criação do Backup !" + err);
      controle = 0;
  }  

}

Aqui a classe simulatedActivity.

class SimulatedActivity extends Thread
 {  public SimulatedActivity(int t)
    {  current = 0; //inicio
       target = t; // final
    }

   public int getTarget()
    {  return target;
    }

    public int getCurrent()
    {  return current;
    }

    public void run()
   {  while (current < target && !interrupted())
       {  try
          {  sleep(10);//progresso da barra corre mais rápido ou mais lento
          }
          catch(InterruptedException e)
          {  return;
          }
          current++;
       }
    }

    private int current;
    private int target;
 }

Aqui é o método que ativa a JProgressBar

public void atividade()
{
     activityMonitor = new Timer(10,
          new ActionListener()
             {  public void actionPerformed(ActionEvent event)
                {  int current = activity.getCurrent();

                    pbBarra.setValue(current);
                    

                   if (current == activity.getTarget())
                   {  activityMonitor.stop();
                    
                   }
                }
             });

               pbBarra.setMaximum(30);
               activity = new SimulatedActivity(30);


               activity.start();
               activityMonitor.start();
}

Bom, resumindo. Eu até fiz a barra funcionar normalmente mas, rssss, ela funciona a toa, nao tem nehuma ligação que mostre realmente
como está o andamento do método backup.

Criado 12 de novembro de 2011
Respostas 0
Participantes 1