/* ******************************************************************************
* Copyright (c) 2006-2012 XMind Ltd. and others.
*
* This file is a part of XMind 3. XMind releases 3 and
* above are dual-licensed under the Eclipse Public License (EPL),
* which is available at http://www.eclipse.org/legal/epl-v10.html
* and the GNU Lesser General Public License (LGPL),
* which is available at http://www.gnu.org/licenses/lgpl.html
* See http://www.xmind.net/license.html for details.
*
* Contributors:
* XMind Ltd. - initial API and implementation
*******************************************************************************/
package org.xmind.ui.io;
import java.io.IOException;
import java.io.OutputStream;
import org.eclipse.core.runtime.IStatus;
/**
* An <code>IDownloadTarget</code> describes a location where the download data
* should be placed.
*
* @author Frank Shaka
*/
public interface IDownloadTarget {
/**
* An <code>IDownloadTarget2</code> adds functions that are notified when
* the donwload job is done.
*
* @author Frank Shaka
*/
interface IDownloadTarget2 {
/**
* Called when the download job is done. Clients can implement this
* method to perform cleaning or other finishing work.
* <p>
* Note that any error generated by this method will be ignored.
*
* @param status
* the result of the download job
*/
void afterDownload(IStatus status);
}
/**
* Returns the path describing this download target. Used to tell the user
* where the data are to be downloaded.
*
* @return the path describing this download target
*/
String getPath();
/**
* Opens and returns an output stream to which downloaded data are written.
* Each call to this method should result in a new output stream to be
* opened.
*
* @return an output stream to receive downloaded data
* @throws IOException
* should any I/O error occurred
*/
OutputStream openOutputStream() throws IOException;
}