/********************************************************************** * Copyright (c) 2013, 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 * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Matthew Khouzam - Initial API and implementation **********************************************************************/ package org.eclipse.tracecompass.internal.tmf.ui.project.model; import java.io.File; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.tracecompass.internal.tmf.ui.Activator; /** * Import helper used to import traces * * It has two purposes: - import files and directories into projects - set the * resource types * * @author Matthew Khouzam */ public class TmfImportHelper { /** * Create a link and replace what was already there. * * @param parentFolder * the resource to import to, does not contain the element name * @param location * where the resource (file/directory) is located * @param targetName * the name to display * @return the resource created. Should not be null * @throws CoreException * an exception made by createLink. */ public static IResource createLink(IFolder parentFolder, IPath location, String targetName) throws CoreException { File source = new File(location.toString()); IResource res = null; IWorkspace workspace = ResourcesPlugin.getWorkspace(); if (source.isDirectory()) { IFolder folder = parentFolder.getFolder(targetName); IStatus result = workspace.validateLinkLocation(folder, location); if (result.isOK() || result.matches(IStatus.INFO | IStatus.WARNING)) { folder.createLink(location, IResource.REPLACE, new NullProgressMonitor()); } else { Activator.getDefault().logError(result.getMessage()); } } else { IFile file = parentFolder.getFile(targetName); IStatus result = workspace.validateLinkLocation(file, location); if (result.isOK() || result.matches(IStatus.INFO | IStatus.WARNING)) { file.createLink(location, IResource.REPLACE, new NullProgressMonitor()); } else { Activator.getDefault().logError(result.getMessage()); } } res = parentFolder.findMember(targetName); return res; } }