/******************************************************************************* * 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.util; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.HashMap; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; import fr.inria.atlanmod.emfviews.virtualLinks.Filter; import fr.inria.atlanmod.emfviews.virtualLinks.LinkedElement; import fr.inria.atlanmod.emfviews.virtualLinks.VirtualLinks; import fr.inria.atlanmod.emfviews.virtualLinks.VirtualLinksFactory; import fr.inria.atlanmod.emfviews.virtualLinks.VirtualLinksPackage; public class EmfViewsUtil { public static URI toURI(String resourcePath) throws URISyntaxException { IWorkspaceRoot workspaceRoot=ResourcesPlugin.getWorkspace().getRoot(); IResource resource=workspaceRoot.findMember((resourcePath.startsWith("/") ? resourcePath : "/"+resourcePath)); URI resourceUri = (resource!=null ? resource.getLocationURI() : new java.net.URI(resourcePath)); return resourceUri; } public static VirtualLinks createLinksModel() { VirtualLinksPackage vl = VirtualLinksPackage.eINSTANCE; return VirtualLinksFactory.eINSTANCE.createVirtualLinks(); } public static void persistLinksModel(VirtualLinks linksModel, org.eclipse.emf.common.util.URI theUri) throws IOException { XMIResourceImpl linksModelResource= new XMIResourceImpl(); linksModelResource.setURI(theUri); linksModelResource.getContents().add(linksModel); linksModelResource.save(new HashMap<String, String>()); } public static Filter createFilter(String name, String oclQuery, boolean filterOnlyFeatures) { Filter filter = VirtualLinksFactory.eINSTANCE.createFilter(); filter.setName(name); filter.setOclQuery(oclQuery); filter.setFilterOnlyEstructuralFeatures(filterOnlyFeatures); return filter; } public static LinkedElement createLinkedElement(String name, String modelRef, String elementRef,String features) { LinkedElement linkedElement = VirtualLinksFactory.eINSTANCE.createLinkedElement(); linkedElement.setName(name); linkedElement.setModelRef(modelRef); linkedElement.setElementRef(elementRef); if(features!=null) linkedElement.setEstructuralFeatures(features); return linkedElement; } public static void associateFilters(VirtualLinks virtualLinks,Filter filter,LinkedElement linkedElement) { filter.setFilteredElement(linkedElement); virtualLinks.getVirtualLinks().add(filter); virtualLinks.getLinkedElements().add(linkedElement); } }