14bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair/*
24bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Copyright 2007 the original author or authors.
34bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
44bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Licensed under the Apache License, Version 2.0 (the "License");
54bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * you may not use this file except in compliance with the License.
64bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * You may obtain a copy of the License at
74bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
84bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *      http://www.apache.org/licenses/LICENSE-2.0
94bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
104bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Unless required by applicable law or agreed to in writing, software
114bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * distributed under the License is distributed on an "AS IS" BASIS,
124bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * See the License for the specific language governing permissions and
144bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * limitations under the License.
154bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair */
164bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairpackage org.mockftpserver.stub.example;
174bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
184bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport java.io.ByteArrayOutputStream;
194bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport java.io.IOException;
204bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport java.net.SocketException;
214bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
224bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport org.apache.commons.net.ftp.FTPClient;
234bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
244bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair/**
254bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Simple FTP client code example.
264bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
274bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * @version $Revision$ - $Date$
284bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
294bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * @author Chris Mair
304bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair */
314bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairpublic class RemoteFile {
324bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
334bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    private String server;
344bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    private int port;
354bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
364bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    public String readFile(String filename) throws SocketException, IOException {
374bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
384bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        FTPClient ftpClient = new FTPClient();
394bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        ftpClient.connect(server, port);
404bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
414bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
424bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        boolean success = ftpClient.retrieveFile(filename, outputStream);
434bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        ftpClient.disconnect();
444bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
454bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        if (!success) {
464bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair            throw new IOException("Retrieve file failed: " + filename);
474bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        }
484bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        return outputStream.toString();
494bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    }
504bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
514bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    /**
524bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * Set the hostname of the FTP server
534bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * @param server - the hostname of the FTP server
544bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     */
554bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    public void setServer(String server) {
564bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        this.server = server;
574bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    }
584bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
594bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    /**
604bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * Set the port number for the FTP server
614bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * @param port - the port number
624bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     */
634bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    public void setPort(int port) {
644bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        this.port = port;
654bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    }
664bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
674bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    // Other methods ...
684bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair}
69