/******************************************************************************* * Copyright (c) 2016 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.windup.model.domain; import java.io.File; import java.net.URL; import java.text.Collator; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.eclipse.core.filesystem.URIUtil; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.emf.common.util.URI; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.jboss.tools.windup.model.Activator; /** * Utility for working with the Eclipse workspace resources. */ public class WorkspaceResourceUtils { /** * Returns a list of {@link IProject}s associated with the given selection. */ public static List<IProject> getProjectsFromSelection(ISelection selection) { List<IProject> projects = new ArrayList<IProject>(); if (selection instanceof IStructuredSelection) { for (Object element : ((IStructuredSelection)selection).toList()) { if (element instanceof IAdaptable) { IAdaptable resource = (IAdaptable) element; IFile file = (IFile) resource.getAdapter(IFile.class); if (file != null) { projects.add(file.getProject()); } else { IProject project = (IProject)resource.getAdapter(IProject.class); if (project != null) { projects.add(project); } } } } } return projects; } /** * @return the project in the workspace matching the specified name. */ public static IProject findProject(String projectName) { return Arrays.stream(ResourcesPlugin.getWorkspace().getRoot().getProjects()).filter(proj -> { return Collator.getInstance().equals(proj.getName(), projectName); }).findFirst().get(); } public static IResource findResource(String uriString) { URI uri = URI.createURI(uriString); Path path = new Path(uri.toPlatformString(false)); return ResourcesPlugin.getWorkspace().getRoot().findMember(path); } public static URI createPlatformPluginURI(IPath path) { return URI.createPlatformPluginURI(path.toString(), false); } public static java.nio.file.Path computePath(String platformPluginUri) { try { URL resUrl = new URL(platformPluginUri.replace("platform:/plugin", "platform:/resource")); URL url = FileLocator.toFileURL(resUrl); File temp = new File(url.getFile()); return temp.toPath(); } catch (Exception e) { Activator.log(e); } return null; } public static IFile getFile(String locationURI) { IFile file = null; java.net.URI location = URIUtil.toURI(locationURI); IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocationURI(location); if (files.length > 0) { file = files[0]; } return file; } public static IFile getResource(String absolutePath) { return ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(absolutePath)); } }