import static java.lang.System.err; import static java.lang.System.out; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.MalformedURLException; import java.rmi.NotBoundException; import java.rmi.RemoteException; import sd.Utilities; import sd.exceptions.NoSuchServerException; import sd.files.FileData; import sd.files.FileInfo; import sd.files.exceptions.NoSuchPathException; import sd.rest.dropbox.DropboxProxy; import sd.rmi.server.IServer; import sd.rmi.server.Server; /** * */ /** * Ponto de entrada no programa para um servidor. */ public class MainDropBoxProxy { private static final int LOCAL_NAME = 0; private static final int PATH = 1; private static final int REMOTE_SERVER = 2; private static final int ERROR_CODE = -1; /** * Ponto de entrada no servidor. * @param args * @throws IOException */ public static void main(String[] args) throws IOException { IServer server = null; Thread thread = null; if ( args.length < 2 ) { err.println("Argumentos insuficientes."); err.println("Uso : MainServer [servidor_remoto]"); err.println("\nnome_local - Nome do servidor. Este será o nome com o qual o servidor se registara no RMI."); err.println("\ncaminho_corrente - O caminho a partir do qual usar o servidor. Exemplo : . "); err.println("\nservidor_remoto - Nome de um servidor remoto. Este valor é opcional. Caso nao exista, o servidor usa o seu proprio registo de servidores."); } try { if ( args.length > 2 ) server = new DropboxProxy( args[ LOCAL_NAME ], args[ PATH ], args[ REMOTE_SERVER ] ); else server = new DropboxProxy( args[ LOCAL_NAME ], args[ PATH ] ); } catch (RemoteException e) { if ( Utilities.GetVerbosity() >= Utilities.ERROR ) err.println("[ Erro @ MainServer.main ] : " + e.getMessage() ); System.exit( ERROR_CODE ); } catch (MalformedURLException e) { if ( Utilities.GetVerbosity() >= Utilities.ERROR ) err.println("[ Erro @ MainServer.main ] : " + Utilities.MALFORMED_URL + e.getMessage() ); System.exit( ERROR_CODE ); } catch (NotBoundException e) { if ( Utilities.GetVerbosity() >= Utilities.ERROR ) err.println("[ Erro @ MainServer.main ] : " + Utilities.NOT_BOUND + e.getMessage() ); System.exit( ERROR_CODE ); } thread = new Thread( (Runnable) server ); thread.start(); try { thread.join(); } catch (InterruptedException e) { out.println("[ Info @ MainServer.main ] : O servidor recebeu o sinal de interrupção de thread. A sair graciosamente."); } } }