blob: ba5463b27c21aca783010f1fc63197b516f52110 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 EclipseSource Muenchen GmbH and others.
* 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:
* Stefan Dirix - initial API and implementation
*******************************************************************************/
package org.eclipse.emf.compare.diagram.ide.ui.papyrus.dependency;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.compare.diagram.ide.ui.papyrus.util.ModelExtensionUtil;
import org.eclipse.emf.compare.ide.ui.dependency.IDependencyProvider;
import org.eclipse.emf.ecore.resource.URIConverter;
/**
* A client of the EMF Compare Dependency extension point providing a lightweight integration of the Papyrus
* ModelSet approach with the EMF Model Resolution Strategy.
*
* @author Stefan Dirix <sdirix@eclipsesource.com>
*/
public class PapyrusDependencyProvider implements IDependencyProvider {
/**
* File extensions registered in Papyrus.
*/
private List<String> fileExtensions;
/**
* Constructs and initializes the PapyrusDependencyIdentifier.
*/
public PapyrusDependencyProvider() {
fileExtensions = new ArrayList<String>(ModelExtensionUtil.getRegisteredFileExtensions());
}
/**
* {@inheritDoc}
*/
public boolean apply(URI uri) {
return fileExtensions.contains(uri.fileExtension());
}
/**
* {@inheritDoc} Checks the Papyrus model extension point and tries to determine all dependencies from the
* registered information.
*/
public Set<URI> getDependencies(URI uri, URIConverter uriConverter) {
final Set<URI> dependencies = new LinkedHashSet<URI>();
for (String fileExtension : fileExtensions) {
URI dependencyURI = uri.trimFileExtension().appendFileExtension(fileExtension);
if (uriConverter.exists(dependencyURI, null)) {
dependencies.add(dependencyURI);
}
}
return dependencies;
}
}