X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=org.eclipse.linuxtools.tmf.ui%2Fsrc%2Forg%2Feclipse%2Flinuxtools%2Finternal%2Ftmf%2Fui%2Fproject%2Fwizards%2Ftracepkg%2Fimportexport%2FTracePackageExportOperation.java;h=89bf86c81fc69f16142548ca0f73482a03e11274;hb=507b1336fb237092ac81b047139e42677e5b61ac;hp=c53b56dd50a8028cd5f763e6ee1dd7d8624d704c;hpb=288c166d0038a94a36f31783c8d6ddb1d8cef6fe;p=deliverable%2Ftracecompass.git diff --git a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/internal/tmf/ui/project/wizards/tracepkg/importexport/TracePackageExportOperation.java b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/internal/tmf/ui/project/wizards/tracepkg/importexport/TracePackageExportOperation.java index c53b56dd50..89bf86c81f 100644 --- a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/internal/tmf/ui/project/wizards/tracepkg/importexport/TracePackageExportOperation.java +++ b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/internal/tmf/ui/project/wizards/tracepkg/importexport/TracePackageExportOperation.java @@ -16,7 +16,8 @@ import java.io.ByteArrayInputStream; import java.io.StringWriter; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; @@ -30,6 +31,7 @@ import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; @@ -65,7 +67,7 @@ public class TracePackageExportOperation extends AbstractTracePackageOperation { private final TracePackageTraceElement[] fTraceExportElements; private final boolean fUseCompression; private final boolean fUseTar; - private final List fResources; + private final Set fResources; private IFolder fExportFolder; /** @@ -85,7 +87,7 @@ public class TracePackageExportOperation extends AbstractTracePackageOperation { fTraceExportElements = traceExportElements; fUseCompression = useCompression; fUseTar = useTar; - fResources = new ArrayList(); + fResources = new HashSet<>(); } /** @@ -110,6 +112,10 @@ public class TracePackageExportOperation extends AbstractTracePackageOperation { Node tmfNode = doc.appendChild(createElement); for (TracePackageTraceElement tracePackageElement : fTraceExportElements) { + if (!isFilesChecked(tracePackageElement)) { + continue; + } + exportTrace(progressMonitor, tmfNode, tracePackageElement); } @@ -190,9 +196,13 @@ public class TracePackageExportOperation extends AbstractTracePackageOperation { ModalContext.checkCanceled(monitor); IResource res = supplFile.getResource(); res.refreshLocal(0, new SubProgressMonitor(monitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK)); - createExportResource(traceSuppFilesFolder, res); + IResource link = createExportResource(traceSuppFilesFolder, res); Element suppFileElement = doc.createElement(ITracePackageConstants.SUPPLEMENTARY_FILE_ELEMENT); - suppFileElement.setAttribute(ITracePackageConstants.SUPPLEMENTARY_FILE_NAME_ATTRIB, res.getName()); + + // project/.traceExport/.tracing/kernel/statistics.ht -> .tracing/kernel/statistics.ht + IPath archiveRelativePath = link.getFullPath().makeRelativeTo(fExportFolder.getFullPath()); + + suppFileElement.setAttribute(ITracePackageConstants.SUPPLEMENTARY_FILE_NAME_ATTRIB, archiveRelativePath.toString()); traceNode.appendChild(suppFileElement); } @@ -208,9 +218,11 @@ public class TracePackageExportOperation extends AbstractTracePackageOperation { folder.create(IResource.FORCE, true, new SubProgressMonitor(monitor, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK)); } - createExportResource(folder, resource); + IResource link = createExportResource(folder, resource); Element fileElement = doc.createElement(ITracePackageConstants.TRACE_FILE_ELEMENT); - fileElement.setAttribute(ITracePackageConstants.TRACE_FILE_NAME_ATTRIB, resource.getName()); + // project/.traceExport/Traces/kernel -> Traces/kernel + IPath archiveRelativePath = link.getFullPath().makeRelativeTo(fExportFolder.getFullPath()); + fileElement.setAttribute(ITracePackageConstants.TRACE_FILE_NAME_ATTRIB, archiveRelativePath.toString()); traceNode.appendChild(fileElement); fResources.add(folder); } @@ -221,16 +233,21 @@ public class TracePackageExportOperation extends AbstractTracePackageOperation { * @param exportFolder the folder that will contain the linked resource * @param res the resource to export * @throws CoreException when createLink fails + * @return the created linked resource */ - private static void createExportResource(IFolder exportFolder, IResource res) throws CoreException { + private static IResource createExportResource(IFolder exportFolder, IResource res) throws CoreException { + IResource ret = null; // Note: The resources cannot be HIDDEN or else they are ignored by ArchiveFileExportOperation if (res instanceof IFolder) { IFolder folder = exportFolder.getFolder(res.getName()); folder.createLink(res.getLocationURI(), IResource.NONE, null); + ret = folder; } else if (res instanceof IFile) { IFile file = exportFolder.getFile(res.getName()); file.createLink(res.getLocationURI(), IResource.NONE, null); + ret = file; } + return ret; } private static void exportBookmarks(IProgressMonitor monitor, Node traceNode, TracePackageBookmarkElement element) throws CoreException, InterruptedException { @@ -268,7 +285,7 @@ public class TracePackageExportOperation extends AbstractTracePackageOperation { } private IStatus exportToArchive(IProgressMonitor monitor, int totalWork) throws InvocationTargetException, InterruptedException { - ArchiveFileExportOperation op = new ArchiveFileExportOperation(fResources, getFileName()); + ArchiveFileExportOperation op = new ArchiveFileExportOperation(new ArrayList<>(fResources), getFileName()); op.setCreateLeadupStructure(false); op.setUseCompression(fUseCompression); op.setUseTarFormat(fUseTar);