/* * Filter elements to avoid having files of directory traces listed as * separate traces. */ private void filterElements(TracePackageElement parentElement) { for (TracePackageElement childElement : parentElement.getChildren()) { filterElements(childElement); if (childElement instanceof TracePackageTraceElement) { // no need to do length check here RemoteImportTraceFilesElement filesElement = (RemoteImportTraceFilesElement) childElement.getChildren()[0]; IFileStore parentFile = filesElement.getRemoteFile().getParent(); if (fDirectoryTraces.contains( TmfTraceCoreUtils.newSafePath(parentFile.toURI().getPath()))) { removeChild(childElement, parentElement); continue; } IFileStore grandParentFile = parentFile.getParent(); if (grandParentFile != null && fDirectoryTraces.contains( TmfTraceCoreUtils.newSafePath(grandParentFile.toURI().getPath()))) { // ignore file if grandparent is a directory trace // for example: file is a index file of a LTTng kernel trace parentElement.removeChild(childElement); if (parentElement.getChildren().length == 0) { TracePackageElement grandParentElement = parentElement.getParent(); removeChild(parentElement, grandParentElement); } continue; } } else if (childElement instanceof RemoteImportFolderElement) { if (childElement.getChildren().length == 0) { parentElement.removeChild(childElement); } } } }