View Javadoc

1   /********************************************************************************
2    * $Id: Client.java 125 2008-07-10 20:32:42Z sjardine $
3    * 
4    * Copyright 2005-2008 Steven Jardine, MJN Services, Inc. <steve@mjnservices.com>
5    * 
6    * All rights reserved. This program and the accompanying materials are made
7    * available under the terms of the GNU Lesser Public License v2.1 which 
8    * accompanies this distribution, and is available at
9    * 	http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
10   *
11   * For more information on the HylaFAX Fax Server please see
12   * 	HylaFAX  - http://www.hylafax.org or 
13   * 	Hylafax+ - http://hylafax.sourceforge.net
14   * 
15   * Contributors:
16   * 	Steven Jardine - Initial API and implementation
17   ******************************************************************************/
18  package gnu.hylafax;
19  
20  import gnu.inet.ftp.ConnectionEventSource;
21  import gnu.inet.ftp.ServerResponseException;
22  import gnu.inet.ftp.TransferEventSource;
23  
24  import java.io.FileNotFoundException;
25  import java.io.IOException;
26  import java.io.InputStream;
27  import java.io.OutputStream;
28  import java.util.Vector;
29  
30  /***
31   * Interface for HylaFAX clients.
32   * 
33   * @author Steven Jardine <steve@mjnservices.com>
34   */
35  public interface Client extends ClientProtocol, TransferEventSource,
36  	ConnectionEventSource {
37  
38      /***
39       * Create a new job in the server
40       * 
41       * @return a new Job instance on the server
42       * @exception ServerResponseException
43       * @exception IOException
44       *                an IO error occurred while communicating with the server
45       */
46      public Job createJob() throws ServerResponseException, IOException;
47  
48      /***
49       * Delete the given done or suspended job @
50       * 
51       * param job the (done or suspended) job to delete
52       * 
53       * @exception ServerResponseException
54       * @exception IOException
55       *                an IO error occurred while communicating with the server
56       */
57      public void delete(Job job) throws ServerResponseException, IOException;
58  
59      /***
60       * GET the named file, FTP style.
61       * 
62       * @param path
63       *            the name of the file to GET. This can be a full or partial
64       *            path.
65       * @param out
66       *            the OutputStream to write the file data to
67       * @exception IOException
68       *                an IO error occurred
69       * @exception ServerResponseException
70       *                the server reported an error
71       * @exception FileNotFoundException
72       *                the given path does not exist
73       */
74      public void get(String path, OutputStream out) throws IOException,
75  	    FileNotFoundException, ServerResponseException;
76  
77      /***
78       * get a Job instance for the given job id
79       * 
80       * @param id
81       *            the id of the job to get
82       * @exception ServerResponseException
83       * @exception IOException
84       *                an IO error occurred while communicating with the server
85       */
86      public Job getJob(long id) throws ServerResponseException, IOException;
87  
88      /***
89       * get a long-style listing of files in the current directory. NOTE: this
90       * calls the list() method internally with the "." path.
91       * 
92       * @exception IOException
93       *                an IO error occurred
94       * @exception FileNotFoundException
95       *                the "." path doesn't exist
96       * @exception ServerResponseException
97       *                the server reported an error
98       * @return a Vector of Strings containing the list information
99       */
100     public Vector getList() throws IOException, FileNotFoundException,
101 	    ServerResponseException;
102 
103     /***
104      * get a long-style listing of files in the given directory. NOTE: this
105      * calls the list() method internally.
106      * 
107      * @param path
108      *            the path that we're interested in finding the contents of
109      * @exception IOException
110      *                an IO error occurred
111      * @exception FileNotFoundException
112      *                the given path doesn't exist
113      * @exception ServerResponseException
114      *                the server reported an error
115      * @return a Vector of Strings containing the list information
116      */
117     public Vector getList(String path) throws IOException,
118 	    FileNotFoundException, ServerResponseException;
119 
120     /***
121      * get name list of files in the current directory. Similar to getList() but
122      * returns filenames only where getList() returns other, system dependant
123      * information.
124      * 
125      * @exception IOException
126      *                an IO error occurred
127      * @exception ServerResponseException
128      *                the server reported an error
129      * @exception FileNotFoundException
130      *                the requested path does not exist
131      * @return Vector of Strings containing filenames
132      */
133     public Vector getNameList() throws IOException, ServerResponseException,
134 	    FileNotFoundException;
135 
136     /***
137      * get name list of files in the given directory. Similar to getList() but
138      * returns filenames only where getList() returns other, system dependant
139      * information.
140      * 
141      * @param path
142      *            the path of the directory that we want the name list of
143      * @exception IOException
144      *                an IO error occurred
145      * @exception ServerResponseException
146      *                the server reported an error
147      * @exception FileNotFoundException
148      *                the requested path does not exist
149      * @return Vector of Strings containing filenames
150      */
151     public Vector getNameList(String path) throws IOException,
152 	    ServerResponseException, FileNotFoundException;
153 
154     /***
155      * check whether passive transfers have been enabled
156      * 
157      * @return true if passive transfers are enabled, false otherwise
158      */
159     public boolean getPassive();
160 
161     /***
162      * interrupt the given job
163      * 
164      * @param job
165      *            the job to interrupt
166      * @exception ServerResponseException
167      * @exception IOException
168      *                an IO error occurred while communicating with the server
169      */
170     public void interrupt(Job job) throws ServerResponseException, IOException;
171 
172     /***
173      * kill the given job
174      * 
175      * @param job
176      *            the job to kill
177      * @exception ServerResponseException
178      * @exception IOException
179      *                an IO error occurred while communicating with the server
180      */
181     public void kill(Job job) throws ServerResponseException, IOException;
182 
183     /***
184      * set the transfer mode. valid mode values are MODE_* listed in the
185      * ClientProtocol class.
186      * 
187      * @param mode
188      *            the new mode setting
189      * @exception IOException
190      *                an io error occurred talking to the server
191      * @exception ServerResponseException
192      *                the server replied with an error code
193      */
194     public void mode(char mode) throws IOException, ServerResponseException;
195 
196     /***
197      * put a file with a unique name. NOTE: this calls stou() internally.
198      * 
199      * @exception IOException
200      *                a socket IO error occurred
201      * @exception ServerResponseException
202      *                the server responded with an error code
203      * @return the name of the file created
204      */
205     public String put(InputStream in) throws IOException,
206 	    ServerResponseException;
207 
208     /***
209      * store a file. NOTE: this calls stor() internally.
210      * 
211      * @param pathname
212      *            name of file to store on server (where to put the file on the
213      *            server)
214      * @exception IOException
215      *                a socket IO error occurred
216      * @exception ServerResponseException
217      *                the server responded with an error
218      */
219     public void put(InputStream in, String pathname) throws IOException,
220 	    ServerResponseException;
221 
222     /***
223      * put a temp file, the data is stored in a uniquely named file on the
224      * server. The remote temp file is deleted when the connection is closed.
225      * NOTE: this calls stot() internally.
226      * 
227      * @exception IOException
228      *                io error occurred talking to the server
229      * @exception ServerResponseException
230      *                server replied with error code
231      * @return the filename of the temp file
232      */
233     public String putTemporary(InputStream data) throws IOException,
234 	    ServerResponseException;
235 
236     /***
237      * enable or disable passive transfers
238      * 
239      * @param passive
240      *            indicates whether passive transfers should be used
241      */
242     public void setPassive(boolean passive);
243 
244     /***
245      * submit the given job to the scheduler
246      * 
247      * @param job
248      *            the Job to submit
249      * @exception ServerResponseException
250      * @exception IOException
251      *                an IO error occurred while communicating with the server
252      */
253     public void submit(Job job) throws ServerResponseException, IOException;
254 
255     /***
256      * suspend the given job from the scheduler
257      * 
258      * @param job
259      *            the Job to suspend
260      * @exception ServerResponseException
261      * @exception IOException
262      *                an IO error occurred while communicating with the server
263      */
264     public void suspend(Job job) throws ServerResponseException, IOException;
265 
266     /***
267      * Specify the type of file being sent.
268      * 
269      * @param type
270      *            the type of file being sent.
271      * @throws ServerResponseException
272      * @throws IOException
273      */
274     public void type(char type) throws ServerResponseException, IOException;
275 
276     /***
277      * wait for the given job to complete
278      * 
279      * @param job
280      *            the job to wait for
281      * @exception ServerResponseException
282      * @exception IOException
283      *                an IO error occurred while communicating with the server
284      */
285     public void wait(Job job) throws ServerResponseException, IOException;
286 
287 }