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 | }
|
---|