/**********************************************************************
- * Copyright (c) 2012, 2013 Ericsson
+ * Copyright (c) 2012, 2014 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.TraceControlDialogFactory;
import org.eclipse.linuxtools.internal.lttng2.ui.views.control.messages.Messages;
import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionComponent;
-import org.eclipse.linuxtools.internal.tmf.ui.project.model.TmfImportHelper;
+import org.eclipse.linuxtools.tmf.core.project.model.TmfTraceType;
+import org.eclipse.linuxtools.tmf.core.project.model.TraceTypeHelper;
import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectElement;
import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectRegistry;
import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceFolder;
-import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceType;
-import org.eclipse.linuxtools.tmf.ui.project.model.TraceTypeHelper;
+import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceTypeUIUtils;
import org.eclipse.linuxtools.tmf.ui.project.wizards.importtrace.BatchImportTraceWizard;
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
import org.eclipse.rse.services.files.IFileService;
// create default project
IProject project = TmfProjectRegistry.createProject(DEFAULT_REMOTE_PROJECT_NAME, null, null);
- TmfImportHelper.forceFolderRefresh(project.getFolder(TmfTraceFolder.TRACE_FOLDER_NAME));
if (param.getSession().isStreamedTrace()) {
// Streamed trace
- TmfProjectElement projectElement = TmfProjectRegistry.getProject(project);
+ TmfProjectElement projectElement = TmfProjectRegistry.getProject(project, true);
TmfTraceFolder traceFolder = projectElement.getTracesFolder();
BatchImportTraceWizard wizard = new BatchImportTraceWizard();
wizard.init(PlatformUI.getWorkbench(), new StructuredSelection(traceFolder));
WizardDialog dialog = new WizardDialog(window.getShell(), wizard);
dialog.open();
- traceFolder.refresh();
return null;
}
try {
ImportFileInfo remoteFile = iterator.next();
- downloadTrace(remoteFile, selectedProject);
+ downloadTrace(remoteFile, selectedProject, monitor);
// Set trace type
IFolder traceFolder = selectedProject.getFolder(TmfTraceFolder.TRACE_FOLDER_NAME);
- TmfImportHelper.forceFolderRefresh(traceFolder);
- IFile file = traceFolder.getFile(remoteFile.getLocalTraceName());
+
+ if (monitor.isCanceled()) {
+ status.add(Status.CANCEL_STATUS);
+ break;
+ }
+
+ IResource file = traceFolder.findMember(remoteFile.getLocalTraceName());
TraceTypeHelper helper = null;
}
if (helper != null) {
- status.add(TmfTraceType.setTraceType(file.getFullPath(), helper));
+ status.add(TmfTraceTypeUIUtils.setTraceType(file, helper));
}
} catch (ExecutionException e) {
status.add(new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_ImportFailure, e));
* - trace information of trace to import
* @param project
* - project to import to
+ * @param monitor
+ * - a progress monitor
* @throws ExecutionException
*/
- private static void downloadTrace(ImportFileInfo trace, IProject project)
+ private static void downloadTrace(ImportFileInfo trace, IProject project, IProgressMonitor monitor)
throws ExecutionException {
try {
IRemoteFileSubSystem fsss = trace.getImportFile().getParentRemoteFileSubSystem();
}
IRemoteFile[] sources = fsss.list(trace.getImportFile(), IFileService.FILE_TYPE_FILES, new NullProgressMonitor());
+ SubMonitor subMonitor = SubMonitor.convert(monitor, sources.length);
+ subMonitor.beginTask(Messages.TraceControl_DownloadTask, sources.length);
- String[] destinations = new String[sources.length];
- String[] encodings = new String[sources.length];
for (int i = 0; i < sources.length; i++) {
- destinations[i] = folder.getLocation().addTrailingSeparator().append(sources[i].getName()).toString();
- encodings[i] = null;
+ if (subMonitor.isCanceled()) {
+ monitor.setCanceled(true);
+ return;
+ }
+ String destination = folder.getLocation().addTrailingSeparator().append(sources[i].getName()).toString();
+ subMonitor.setTaskName(Messages.TraceControl_DownloadTask + ' ' + traceName + '/' +sources[i].getName());
+ fsss.download(sources[i], destination, null, subMonitor.newChild(1));
}
-
- fsss.downloadMultiple(sources, destinations, encodings, new NullProgressMonitor());
-
} catch (SystemMessageException e) {
throw new ExecutionException(e.toString(), e);
} catch (CoreException e) {