| /******************************************************************************* |
| * Copyright (c) 2007, 2018 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v2.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v20.html |
| * |
| * Contributors: |
| * IBM - Initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.ocl.examples.interpreter.console; |
| |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.resource.Resource; |
| import org.eclipse.ocl.OCL; |
| |
| |
| /** |
| * Interface for a provider of an {@link OCL} facade for some target metamodel. |
| * |
| * @author Christian W. Damus (cdamus) |
| */ |
| public interface IOCLFactory<C> { |
| /** |
| * Queries the metamodel that I target. |
| * |
| * @return my target metamodel |
| */ |
| TargetMetamodel getTargetMetamodel(); |
| |
| /** |
| * Creates a new OCL instance for my target metamodel. |
| * |
| * @param level the active modeling level |
| * |
| * @return an OCL facade |
| */ |
| <PK, O, P, EL, PM, S, COA, SSA, CT, CLS, E> |
| OCL<PK, C, O, P, EL, PM, S, COA, SSA, CT, CLS, E> createOCL(ModelingLevel level); |
| |
| /** |
| * Creates a new OCL instance for my target metamodel, persisted in the |
| * specified resource. |
| * |
| * @param level the active modeling level |
| * |
| * @param res a resource in which to persist the OCL environment |
| * |
| * @return an OCL facade |
| */ |
| <PK, O, P, EL, PM, S, COA, SSA, CT, CLS, E> |
| OCL<PK, C, O, P, EL, PM, S, COA, SSA, CT, CLS, E> createOCL(ModelingLevel level, |
| Resource res); |
| |
| /** |
| * Obtains the metamodel-specific representation of the context classifier |
| * of the specified model element. |
| * |
| * @param object an element in the model |
| * |
| * @return its classifier, in the metamodel that I target |
| */ |
| C getContextClassifier(EObject object); |
| |
| /** |
| * Obtains the name of an element of my metamodel (an instance of a |
| * metaclass). |
| * |
| * @param modelElement a named model element |
| * |
| * @return the model element's name |
| */ |
| String getName(Object modelElement); |
| } |