1 import java.io.*;
2 import java.lang.*;
3
4 public class BallAmigosRunner{
5 public BallAmigosRunner()
6 {
7 }
8
9 private Process runCmd(String []cmd, String dir)
10 {
11 try{
12 ProcessBuilder p = new ProcessBuilder(cmd);
13 p.redirectErrorStream(true);
14 if (dir != null){
15 File d = new File(dir);
16 p.directory(d);
17 }
18 return p.start();
19 }
20 catch (Exception err) {
21 System.err.println("Can't run " + cmd[0] + err.toString());
22 return null;
23 }
24 }
25
26
27 private void waitForCmd(String []cmd, String dir)
28 {
29 try {
30 String line;
31 Process p = runCmd(cmd, dir);
32 BufferedReader input = new BufferedReader
33 (new InputStreamReader(p.getInputStream()));
34
35 while ((line = input.readLine()) != null) {
36 System.out.println(line);
37 }
38 input.close();
39 }
40 catch (Exception err) {
41 System.err.println("Can't run " + cmd[0] + err.toString());
42 }
43 }
44
45 public static void main(String argv[]) {
46 BallAmigosRunner runner = new BallAmigosRunner();
47 String sep = System.getProperty("path.separator");
48
49 if (argv.length >= 1 && argv[0].equals("-server")){
50 String []rmicmd = {"rmiregistry"};
51 System.out.println(sep);
52 String []servercmd = {"java", "-cp", "ballamigos-0.1.jar:db/hsqldb.jar",
53 "pl.agh.iosr.ballamigos.server.GameServer"};
54 String []dbcmd = {"java", "-cp", "hsqldb.jar", "org.hsqldb.Server", "-database.0",
55 "ballamigos", "-dbname.0", "ballamigos"};
56
57 System.out.println("Trying to start rmiregistry");
58 runner.runCmd(rmicmd, null);
59
60 System.out.println("Trying to start data base server in db directory");
61 runner.runCmd(dbcmd, "db");
62
63 try{
64 Thread.sleep(2000);
65 }catch(InterruptedException ex){}
66
67 System.out.println("Starting BallAmigos server");
68 runner.waitForCmd(servercmd, null);
69 }
70 else{
71 String []clientcmd = {"java", "-cp", "ballamigos-0.1.jar", "pl.agh.iosr.ballamigos.client.GameClient"};
72 System.out.println("Starting BallAmigos client...");
73 runner.waitForCmd(clientcmd, null);
74 }
75 }
76 }