1 package wjhk.jupload2;
2
3 import javax.swing.JFrame;
4
5 import wjhk.jupload2.context.JUploadContext;
6 import wjhk.jupload2.context.JUploadContextExecutable;
7 import wjhk.jupload2.policies.UploadPolicy;
8
9 /**
10 *
11 * This class allows to use JUpload as a stand alone application. It can then be
12 * used to manage upload, as do the applet. Or it can be used as a daemon. In
13 * this case the applet 'paste' files to the daemon, and the daemon is
14 * responsible for the upload. This is a good point when uploading big files:
15 * the user can go on browsing, or close his/her browser. The daemon will keep
16 * on uploading the file(s). <BR>
17 * The configuration can be stored in the jar file, or in a property file
18 * available on the net, through a URL. See the {link {@link #main(String[])}
19 * method for details.<BR>
20 * The daemon parameters are the same for the applet and the daemon. They are
21 * described on the {@link UploadPolicy} page.
22 *
23 * @author etienne_sf
24 *
25 */
26 public class JUploadDaemon extends JFrame {
27
28 /** A generated serialVersionUID */
29 private static final long serialVersionUID = 1L;
30
31 /**
32 * The URL, that 'perhaps' was given to the main method. Used only to
33 * transfer the value between the invokeLater and the actual execution of
34 * this method. It's not very clean, but I guess there will never be two
35 * execution of the daemon that will start in the same quarter of second
36 * with a different URL.
37 */
38 private static String propertiesURL = null;
39
40 /**
41 * The current execution context.
42 */
43 transient JUploadContext juploadContext = null;
44
45 /**
46 * Default constructor.
47 */
48 public JUploadDaemon() {
49 // TODO add a way to personalize the window title.
50 super("JUpload daemon");
51
52 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
53 }
54
55 /**
56 * Create the GUI and show it. For thread safety, this method should be
57 * invoked from the event-dispatching thread.
58 */
59 private static void createAndShowGUI() {
60 JUploadDaemon juploadDaemon = new JUploadDaemon();
61 juploadDaemon.juploadContext = new JUploadContextExecutable(
62 juploadDaemon, propertiesURL);
63
64 // Display the window.
65 juploadDaemon.pack();
66 juploadDaemon.setVisible(true);
67 }
68
69 /**
70 * The start of the application, when launched as a Stand Alone one. If an
71 * argument is given, it must be a valid URL to the JUpload configuration
72 * file. The daemon will load it as a property file. The allowed parameters
73 * and values are the same as the applet parameters. These are indicated in
74 * the {@link wjhk.jupload2.policies.UploadPolicy} page.<BR>
75 * If this URL is not given, the /conf folder in the jar file must contain
76 * the daemon property file.
77 *
78 * @param args args[1] is optional, and may contain the URL pointing to the
79 * configuration page.
80 */
81 public static void main(String[] args) {
82 propertiesURL = null;
83 if (args.length > 0) {
84 propertiesURL = args[0];
85 }
86 javax.swing.SwingUtilities.invokeLater(new Runnable() {
87 public void run() {
88 createAndShowGUI();
89 }
90 });
91 }
92 }