[Resolvido]Renomear arquivo com RMI

0 respostas
muniquewassem

Boa noite,

Eu tenho uma aplicação que lê um arquivo, envia uma String de dados para um BD e renomeia essa arquivos com RMI. Eu criei 3 projetos diferentes, um para cada funcionalidade e agora criei um que abrange todas funcionalidade.

Eu já consegui integrar a leitura do arquivo e envio para o banco, mas quando tento renomear não dá certo! Já tentei integrar tudo no mesmo método, com métodos diferente e nada!
Olha, eu já tentei de toda maneira que consegui pensar, mas não dá certo. Não sei se é porque o arquivo acabou ou ainda está sendo usado, não sei mesmo.

import java.io.File;
import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Munique
 */
public class ServidorCompletoRMI implements InterfaceCompleta {

    public String dbUrl = "jdbc:postgresql://localhost:5432/BDEstacao";
    public String dbDriver = "org.postgresql.Driver";
    public String dbUser = "postgres";
    public String dbSenha = "postgre";
    
    /**
    private static String dir = "C:" + File.separator + "Users" + File.separator + "Munique" + File.separator + "Documents"
            + File.separator + "aleatorio" + File.separator + "teste.txt";
    private static String dir2 = "C:" + File.separator + "Users" + File.separator + "Munique" + File.separator + "Documents"
            + File.separator + "aleatorio" + File.separator + "testelido.txt";
    File renomeado = new File(dir2);
    */
    File arquivo = new File("C:" + File.separator + "Users" + File.separator + "Munique" + File.separator + "Documents" 
            + File.separator + "aleatorio" + File.separator + "teste.txt");
    File renomeado = new File("C:" + File.separator + "Users" + File.separator + "Munique" + File.separator + "Documents"
            + File.separator + "aleatorio" + File.separator + "testelido.txt");
    
    
    public void inicia() {
        try {

            InterfaceCompleta stub = (InterfaceCompleta) UnicastRemoteObject.exportObject(this, 0);

            Registry registry = LocateRegistry.createRegistry(3637);

            registry.bind("Servidor", stub);

            System.out.println("Servidor iniciado...");
        } catch (RemoteException ex) {
            System.out.println(ex.getMessage());
        } catch (AlreadyBoundException ex) {
            System.out.println(ex.getMessage());
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    public String enviaDados(String mensagem) throws RemoteException{
        if (arquivo.exists()) {
            boolean retorno = false;
            Connection con = null;
            String sql;

            try {
                try {
                    Class.forName(dbDriver);
                } catch (ClassNotFoundException ex) {
                    ex.printStackTrace();
                }
                con = DriverManager.getConnection(dbUrl, dbUser, dbSenha);
                con.setAutoCommit(false);
                Statement stat = con.createStatement();
                sql = "INSERT INTO estacao(codigoestacao, descestacao, horario, pressao, temperatura) VALUES (NEXTVAL('seq_estacao')," + mensagem + ");";
                //System.out.println(sql);
                stat.executeUpdate(sql);
                con.commit();
                stat.close();
                con.close();
                retorno = true;
               
            } catch (SQLException e) {
                try {
                    con.rollback();
                    con.close();
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        } else {
            return null;
        }
        return null;
    }
    
    public String renomearArquivo() throws RemoteException{
        if (arquivo.exists()){
            arquivo.renameTo(renomeado);
        }
        return renomeado.getName();
    }

    public static void main(String[] args) throws RemoteException {
        new ServidorCompletoRMI().inicia();
    }
}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.rmi.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Munique
 */
public class ClienteCompletoRMI {

    public ClienteCompletoRMI() throws RemoteException, NotBoundException {
        iniciar();
    }

    public void iniciar() {
        String opcao;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            Registry registry = LocateRegistry.getRegistry("localhost", 3637);
            InterfaceCompleta intf = (InterfaceCompleta) registry.lookup("Servidor");
            opcao = br.readLine();
            while (!opcao.equals("")) {
                if (opcao.equalsIgnoreCase("lista")) {                  
                    lista(intf);
                    renomear(intf);
                }
                opcao = br.readLine();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void lista(InterfaceCompleta intf) throws RemoteException {

        String linha = null;
        File file = new File("C:\\Users\\Munique\\Documents\\aleatorio\\teste.txt");
        //File renomeado = new File("C:\\Users\\Munique\\Documents\\aleatorio\\testelido.txt");
        try {
            FileReader reader = new FileReader(file);
            BufferedReader buffer = new BufferedReader(reader);

            while (buffer.ready()) {
                linha = buffer.readLine();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }

        String listaArquivo = intf.enviaDados(linha);
    }

    private void renomear(InterfaceCompleta intf) throws RemoteException {
        String nome = intf.renomearArquivo();
        if (nome != null) {
            System.out.println(nome);
        } else {
            System.out.println(nome);
        }
    }

    public static void main(String[] args) throws RemoteException, NotBoundException {
        new ClienteCompletoRMI();
    }
}
public interface InterfaceCompleta extends Remote{
    public String enviaDados(String mensagem) throws RemoteException;
    public String renomearArquivo() throws RemoteException;
}

Opa! Bati a cabeça mais um pouco e consegui achar uma solução.

Criado 10 de outubro de 2011
Respostas 0
Participantes 1