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.