Java + DropBox

Salve galerinha!

Hoje implementei no meu projeto java swing o DropBox para fazer upload do arquivo do banco de dados (HSQLDB) embedded para nuvem.

Ocorreu tudo certo, consegui salvar o arquivo, porém queria saber se existe algum metódo ou api que possa evitar ter que gerar o código toda hora, que deixe o código fixo?

E se é possível fazer o upload de arquivo com o mesmo nome, fazer tipo um update ou deletar o arquivo existente e salvar um novo?
Ação do meu botão de Backup:

DbxRequestConfig config = DbxRequestConfig.newBuilder("dropbox/java-tutorial").build();
        DbxClientV2 client = new DbxClientV2(config, ACCESS_TOKEN);
        boolean check = false;
        
        FullAccount account;
        try {
        account = client.users().getCurrentAccount();
        System.out.println(account.getName().getDisplayName());
    } catch (DbxException ex) {
        Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    ListFolderResult result;
    try {
        result = client.files().listFolder("");
        while (true) {
        for (Metadata metadata : result.getEntries()) {
            if(metadata.getName().equals("bdbkp.txt")){
                System.out.println("ok");
            }else{
                System.out.println("Nenhum arquivo encontrado");
            }
        }

        if (!result.getHasMore()) {
            break;
        }
    }
        result = client.files().listFolderContinue(result.getCursor());
    }       catch (DbxException ex) {
        Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    
try (InputStream in = new FileInputStream("bd/bdext.script")) {
    FileMetadata metadata = client.files().uploadBuilder("/bdbkp.txt").uploadAndFinish(in);
    metadata.equals(0);
    }catch (FileNotFoundException ex) {    	
        Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
    } catch (DbxException ex) {
        Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
    }

Que código eh esse? O token?

Isso amigo, esse token é gerado no site do dropbox

Por questão de segurança, esse token deve possuir um tempo para expirar, por isso deve ser gerado de tempos em tempos. Nunca fiz integração com dropbox, mas pelo que conheço desses tokens (JWT ou qualquer outro) acho difícil permanecer um token fixo para esse tipo de coisa.

Provavelmente você terá que gerar esse token sempre que for necessário.

Entendi, imaginei isso mesmo, procurei na documentação e fóruns e não achei nada a respeito.
Então desenvolvi dois JOptionPane, um pra inserção do token e o outro pra inserção do nome do arquivo.

private void jMenuItem15ActionPerformed(java.awt.event.ActionEvent evt) {                                            
    ACCESS_TOKEN = JOptionPane.showInputDialog("Insira aqui o Token de acesso do DropBox: ");
    DbxRequestConfig config = DbxRequestConfig.newBuilder("dropbox/java-tutorial").build();
    DbxClientV2 client = new DbxClientV2(config, ACCESS_TOKEN);
    String nome_arq = null;
    
    FullAccount account;
    try {
        account = client.users().getCurrentAccount();
        System.out.println(account.getName().getDisplayName());
        nome_arq = JOptionPane.showInputDialog("Você está conectado com "+account.getName().getDisplayName()+". Insira o nome do arquivo de backup: ");
    } catch (DbxException ex) {
        Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        JOptionPane.showMessageDialog(this, "Token expirado ou incorreto, tente novamente!");
        return;
    }
    
    ListFolderResult result;
    try {
        result = client.files().listFolder("");
        while (true) {
        for (Metadata metadata : result.getEntries()) {
            if(metadata.getName().equals(nome_arq)){
                JOptionPane.showMessageDialog(this, "Já existe um arquivo com esse mesmo nome!");
                return;
            }
        }

        if (!result.getHasMore()) {
            break;
        }
    }
        result = client.files().listFolderContinue(result.getCursor());
    }       catch (DbxException ex) {
        Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    
try (InputStream in = new FileInputStream("bd/bdext.script")) {
    FileMetadata metadata = client.files().uploadBuilder("/"+nome_arq+".txt").uploadAndFinish(in);
    metadata.equals(0);
    JOptionPane.showMessageDialog(this, "Arquivo salvo com sucesso no DropBox!");
    }catch (FileNotFoundException ex) {    	
        Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
    } catch (DbxException ex) {
        Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
    }    	
}
2 curtidas