OSDN Git Service

lejos_NXJ_win32_0_5_0beta.zip
[nxt-jsp/lejos_nxj.git] / nxtOSEK / lejos_nxj / src / java / pctools / lejos / pc / tools / NXJUpload.java
1 package lejos.pc.tools;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5
6 import lejos.pc.comm.*;
7 import org.apache.commons.cli.CommandLine;
8
9 public class NXJUpload {
10
11         private Collection<ToolsLogListener> fLogListeners;
12         private NXJUploadCommandLineParser fParser;
13         private Upload fUpload;
14
15         public NXJUpload() {
16                 fParser = new NXJUploadCommandLineParser();
17                 fLogListeners = new ArrayList<ToolsLogListener>();
18                 fUpload = new Upload(); 
19         }
20
21         public static void main(String[] args) {
22                 try {
23                         NXJUpload instance = new NXJUpload();
24                         instance.addLogListener(new ToolsLogger());
25                         instance.run(args);
26                 } catch(Throwable t) {
27                         System.err.println("an error occurred: " + t.getMessage());
28                 }
29         }
30         
31         public void run(String[] args) throws js.tinyvm.TinyVMException, NXJUploadException {
32                 int protocols = 0;
33                 
34                 CommandLine commandLine = fParser.parse(args);
35                 boolean run = commandLine.hasOption("r");
36                 boolean blueTooth = commandLine.hasOption("b");
37                 boolean usb = commandLine.hasOption("u");
38                 String name = commandLine.getOptionValue("n");
39                 String address = commandLine.getOptionValue("d");
40                 
41                 String fileName = commandLine.getArgs()[0];
42                 
43                 if (blueTooth) protocols |= NXTCommFactory.BLUETOOTH;
44                 if (usb) protocols |= NXTCommFactory.USB;
45                 
46                 fUpload.upload(name, address, protocols, fileName, run);
47         }       
48         
49         /**
50          * register log listener
51          * 
52          * @param listener
53          */
54         public void addLogListener(ToolsLogListener listener) {
55                 fLogListeners.add(listener);
56                 fUpload.addLogListener(listener);
57         }
58         
59         /**
60          * unregister log listener
61          * 
62          * @param listener
63          */
64         public void removeLogListener(ToolsLogListener listener) {
65                 fLogListeners.remove(listener);
66                 fUpload.removeLogListener(listener);
67         }
68
69 }