use of org.eclipse.ecf.filetransfer.IncomingFileTransferException in project ecf by eclipse.
the class BitTorrentConnectWizard method performFinish.
public boolean performFinish() {
workbenchPage = workbench.getActiveWorkbenchWindow().getActivePage();
final IRetrieveFileTransferContainerAdapter irftca = (IRetrieveFileTransferContainerAdapter) container.getAdapter(IRetrieveFileTransferContainerAdapter.class);
try {
targetID = FileIDFactory.getDefault().createFileID(irftca.getRetrieveNamespace(), page.getTorrentName());
} catch (final FileCreateException e) {
new ContainerConnectErrorDialog(workbench.getActiveWorkbenchWindow().getShell(), 1, "The target ID to connect to could not be created", page.getTorrentName(), e).open();
return true;
}
try {
irftca.sendRetrieveRequest(targetID, new IFileTransferListener() {
public void handleTransferEvent(final IFileTransferEvent e) {
if (e instanceof IIncomingFileTransferReceiveStartEvent) {
try {
final IFileTransfer ift = ((IIncomingFileTransferReceiveStartEvent) e).receive(new File(page.getTargetName()));
workbenchPage.getWorkbenchWindow().getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
FileTransfersView.addTransfer(ift);
}
});
} catch (final IOException ioe) {
new ContainerConnectErrorDialog(workbench.getActiveWorkbenchWindow().getShell(), 1, "Could not write to " + page.getTargetName(), page.getTargetName(), null).open();
}
} else if (e instanceof IIncomingFileTransferEvent) {
final FileTransfersView ftv = (FileTransfersView) workbenchPage.findView(FileTransfersView.ID);
if (ftv != null) {
workbenchPage.getWorkbenchWindow().getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
ftv.update(((IIncomingFileTransferEvent) e).getSource());
}
});
}
}
}
}, null);
} catch (final IncomingFileTransferException e) {
new ContainerConnectErrorDialog(workbench.getActiveWorkbenchWindow().getShell(), 1, "Could not send retrieval request.", targetID.getName(), e).open();
}
return true;
}
use of org.eclipse.ecf.filetransfer.IncomingFileTransferException in project ecf by eclipse.
the class XMPPFileTransferRequestListener method fileTransferRequest.
/*
* (non-Javadoc)
*
* @see
* org.jivesoftware.smackx.filetransfer.FileTransferListener#fileTransferRequest
* (org.jivesoftware.smackx.filetransfer.FileTransferRequest)
*/
public void fileTransferRequest(final FileTransferRequest request) {
requestListener.handleFileTransferRequest(new IFileTransferRequestEvent() {
boolean requestAccepted = false;
IFileTransferInfo fileTransferInfo = new IFileTransferInfo() {
Map props = new HashMap();
File f = new File(request.getFileName());
public String getDescription() {
return request.getDescription();
}
public File getFile() {
return f;
}
public Map getProperties() {
return props;
}
public Object getAdapter(Class adapter) {
if (adapter == null)
return null;
if (adapter.isInstance(this))
return this;
final IAdapterManager adapterManager = XmppPlugin.getDefault().getAdapterManager();
return (adapterManager == null) ? null : adapterManager.loadAdapter(this, adapter.getName());
}
public long getFileSize() {
return request.getFileSize();
}
public String getMimeType() {
return request.getMimeType();
}
public String toString() {
final StringBuffer buf = new StringBuffer("FileTransferInfo[");
buf.append("file=").append(f);
buf.append(";size=").append(getFileSize());
buf.append(";description=" + getDescription());
buf.append(";mimeType=").append(getMimeType()).append("]");
return buf.toString();
}
};
public IIncomingFileTransfer accept(File localFileToSave) throws IncomingFileTransferException {
try {
final OutputStream outs = new FileOutputStream(localFileToSave);
return accept(outs, new IFileTransferListener() {
public void handleTransferEvent(IFileTransferEvent event) {
if (event instanceof IIncomingFileTransferReceiveDoneEvent) {
try {
outs.close();
} catch (final IOException e) {
}
}
}
});
} catch (final FileNotFoundException e) {
throw new IncomingFileTransferException("Exception opening file for writing", e);
}
}
public IFileTransferInfo getFileTransferInfo() {
return fileTransferInfo;
}
public ID getRequesterID() {
return createIDFromName(request.getRequestor());
}
public void reject() {
request.reject();
}
public boolean requestAccepted() {
return requestAccepted;
}
public String toString() {
final StringBuffer buf = new StringBuffer("FileTransferRequestEvent[");
buf.append("requester=").append(getRequesterID());
buf.append(";requestAccepted=").append(requestAccepted());
buf.append(";transferInfo=").append(getFileTransferInfo()).append("]");
return buf.toString();
}
public IIncomingFileTransfer accept(OutputStream outputStream, IFileTransferListener listener) throws IncomingFileTransferException {
if (requestAccepted)
throw new IncomingFileTransferException("Incoming request previously accepted");
if (outputStream == null)
throw new IncomingFileTransferException("outputStream cannot be null");
incoming = request.accept();
requestAccepted = true;
try {
return new XMPPIncomingFileTransfer(IDFactory.getDefault().createStringID(request.getStreamID()), request.getFileName(), incoming.recieveFile(), outputStream, request.getFileSize(), listener);
} catch (final Exception e) {
throw new IncomingFileTransferException("Exception receiving file", e);
}
}
});
}
Aggregations