/******************************************************************************* * Copyright (c) 2006-2012 * Software Technology Group, Dresden University of Technology * DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026 * * 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: * Software Technology Group - TU Dresden, Germany; * DevBoost GmbH - Berlin, Germany * - initial API and implementation ******************************************************************************/ package org.reuseware.coconut.resource.resourceset; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.reuseware.coconut.reuseextension.ReuseExtension; import org.reuseware.coconut.reuseextension.RootElementContext; import org.reuseware.coconut.reuseextension.evaluator.EvaluatorUtil; import org.reuseware.coconut.reuseextensionactivator.Argument; import org.reuseware.coconut.reuseextensionactivator.ReuseExtensionActivator; public class ResourceSetReuseResourceUtil { public static boolean isInScopeOf(List<String> UFI, List<String> rexActivatorID) { return UFI.size() >= rexActivatorID.size() && UFI.subList(0, rexActivatorID.size()-1).equals(rexActivatorID.subList(0, rexActivatorID.size()-1)); } public static boolean extendsTypeOf( ReuseExtensionActivator rexActivator, Resource fragmentResource, List<String> UFI) { ReuseExtension rex = rexActivator.getReuseExtension(); for(EObject root : fragmentResource.getContents()) { for(RootElementContext rootElementContext : rex.getRootElementContexts()) { if (rootElementContext.getEBoundClass().isInstance(root)) { Map<String, String> args = new LinkedHashMap<String, String>(); for(Argument arg : rexActivator.getArguments()) { args.put(arg.getParameter(), arg.getValue()); } if (EvaluatorUtil.eval( UFI, root, rootElementContext.getIsExpression(), args)) { return true; } } } } return false; } }