01: /*
02: * %W% %E%
03: *
04: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
05: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
06: *
07: * This program is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU General Public License version
09: * 2 only, as published by the Free Software Foundation.
10: *
11: * This program is distributed in the hope that it will be useful, but
12: * WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * General Public License version 2 for more details (a copy is
15: * included at /legal/license.txt).
16: *
17: * You should have received a copy of the GNU General Public License
18: * version 2 along with this work; if not, write to the Free Software
19: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20: * 02110-1301 USA
21: *
22: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
23: * Clara, CA 95054 or visit www.sun.com if you need additional
24: * information or have any questions.
25: */
26: package com.sun.jump.module.download;
27:
28: import java.net.URL;
29:
30: /**
31: * <code>JUMPDownloader</code> encapsulates the logic of downloading
32: * the application content using some download protocol. The download
33: * process is initiated by calling {@link #start(JUMPDownloadDestination)}
34: * method. The download operation can be cancelled by calling
35: * {@link #cancel} method. The <code>JUMPDownloadModule</code> is responsible
36: * for creating <code>JUMPDownloader</code> instances.
37: */
38: public interface JUMPDownloader {
39: /**
40: * Sets the progress listener. The frequency in which the
41: * listener's <code>dataDownloaded()</code> would be called is
42: * left to the implementation of the download action. To control the
43: * frequency, use the alternate form of the API.
44: *
45: * @param listener the listener that is interested in the download
46: * progress.
47: */
48: public void setProgressListener(
49: JUMPDownloadProgressListener listener);
50:
51: /**
52: * Sets the progress listener with an update frequency.
53: *
54: * @param listener the listener that is interested in the download
55: * progress.
56: * @param updatePercent indicates how frequently the listener's
57: * <code>dataDownloaded()</code> method should be
58: * called (as a percentage of the data downloaded).
59: * So a value of 1 causes the listener
60: * to be invoked everytime one more percent of the data is
61: * downloaded
62: */
63: public void setProgressListener(
64: JUMPDownloadProgressListener listener, int updatePercent);
65:
66: /**
67: * Start the download action and start delivering the data to the
68: * download destination specified. The call blocks till the data
69: * is downloaded and delivered to the destination or some error occurs
70: * which results in an exception being thrown.
71: *
72: * If a progress listener has been set using
73: * {@link #setProgressListener(JUMPDownloadProgressListener, int)}
74: * then it will be notified about the download progress.
75: *
76: * @return the URL pointing to the application content that was downloaded.
77: * @throws JUMPJUMPDownloadException there was any error during downloading
78: * or the download was cancelled by calling
79: * {@link #cancel}
80: */
81: public URL start(JUMPDownloadDestination destination)
82: throws JUMPDownloadException;
83:
84: /**
85: * Cancels the download action. This method does not do anything if
86: * the download action has not been started.
87: */
88: public void cancel();
89:
90: /**
91: * Returns the download descriptor that is associated with the
92: * download action.
93: */
94: public JUMPDownloadDescriptor getDescriptor();
95: }
|