/******************************************************************************* * Copyright (c) 2013 INRIA. * 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: * Juan David Villa Calle - initial API and implementation *******************************************************************************/ package fr.inria.atlanmod.emfviews.virtuallinksdelegator; import java.util.List; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.Platform; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; public class VirtualLinksDelegator { IVirtualLinksDelegate virtualLinksDelegate; String linksDslFile; public VirtualLinksDelegator(String linksDslFile) throws CoreException { this.linksDslFile = linksDslFile; String dslExtension = linksDslFile.substring(linksDslFile .lastIndexOf('.') + 1); IExtension[] extensions = Platform .getExtensionRegistry() .getExtensionPoint( "fr.inria.atlanmod.emfviews.virtuallinksdelegator.type") .getExtensions(); boolean finished = false; IExtension matchingExtension = null; for (int i = 0; i < extensions.length && !finished; i++) { IConfigurationElement[] configElements = extensions[i] .getConfigurationElements(); for (int j = 0; j < configElements.length && !finished; j++) { if (configElements[j].getAttribute("fileExtension") .compareToIgnoreCase(dslExtension) == 0) { matchingExtension = extensions[i]; if (Boolean.parseBoolean(configElements[j] .getAttribute("default")) == true) finished = true; } } } IConfigurationElement[] matchingConfigElements = matchingExtension .getConfigurationElements(); virtualLinksDelegate = (IVirtualLinksDelegate) matchingConfigElements[0] .createExecutableExtension("class"); } public void createVirtualMetamodelLinks(URI virtualLinksModelURI) throws CoreException { try { virtualLinksDelegate.createVirtualMetamodelLinks(linksDslFile, virtualLinksModelURI); } catch (Exception e) { e.printStackTrace(); } } public void createVirtualModelLinks(URI linksModelURI, List<Resource> contributingModels) throws Exception { virtualLinksDelegate.createVirtualModelLinks(linksDslFile, linksModelURI, contributingModels); } }