blob: 67d74e34190fa3f434cdc4578db6ac52c023ba09 [file] [log] [blame]
/**
* Copyright (c) 2011, 2019 Mia-Software 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:
* Gregoire Dupe (Mia-Software) - Design
* Nicolas Guyomar (Mia-Software) - Implementation
* Emmanuelle Rouillé (Mia-Software) - Bug 352618 - To be able to use non derived facet structural features and save them values.
* Nicolas Bros (Mia-Software) - Bug 361823 - [Restructuring] eFacet2 meta-model
* Gregoire Dupe (Mia-Software) - Bug 369987 - [Restructuring][Table] Switch to the new customization and facet framework
* Gregoire Dupe (Mia-Software) - Bug 373078 - API Cleaning
* Gregoire Dupe (Mia-Software) - Bug 376576 - [EFacet] Change the multiplicity of Facet::extendedFacet
*/
package org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.ETypedElement;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Facet</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* A Facet is a virtual sub-type of an existing EClass. A Facet cannot be instantiated.
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.Facet#getExtendedMetaclass <em>Extended Metaclass</em>}</li>
* <li>{@link org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.Facet#getFacetElements <em>Facet Elements</em>}</li>
* <li>{@link org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.Facet#getFacetOperations <em>Facet Operations</em>}</li>
* <li>{@link org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.Facet#getConformanceTypedElement <em>Conformance Typed Element</em>}</li>
* <li>{@link org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.Facet#getExtendedFacets <em>Extended Facets</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.EFacetPackage#getFacet()
* @model annotation="http://www.eclipse.org/emf/2002/Ecore validationDelegates='( self.query.scope = self.facet.extendedMetaClass ) and ( self.query.name = self.name )'"
* annotation="http://www.eclipse.org/emf/2002/Ecore validationDelegates='self.conformanceQuery.scope = self.extendedMetaClass'"
* annotation="org.eclipse.ocl.ecore.OCL body='not(self.container().oclCastAs(FacetSet).facets->exists(f|f.extendedMetaClass.container() <> self.extendedMetaClass.container() ))'"
* @generated
*/
public interface Facet extends EClassifier, DocumentedElement {
/**
* Returns the value of the '<em><b>Extended Metaclass</b></em>' reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Extended Metaclass</em>' reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Extended Metaclass</em>' reference.
* @see #setExtendedMetaclass(EClass)
* @see org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.EFacetPackage#getFacet_ExtendedMetaclass()
* @model annotation="GenModel documentation='The \"extendedMetaclass\" reference references the virtually subtyped EClass.'"
* @generated
*/
EClass getExtendedMetaclass();
/**
* Sets the value of the '{@link org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.Facet#getExtendedMetaclass <em>Extended Metaclass</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Extended Metaclass</em>' reference.
* @see #getExtendedMetaclass()
* @generated
*/
void setExtendedMetaclass(EClass value);
/**
* Returns the value of the '<em><b>Facet Elements</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EStructuralFeature}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* This composite reference contains virtual attributes, references and operations.
* <!-- end-model-doc -->
* @return the value of the '<em>Facet Elements</em>' containment reference list.
* @see org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.EFacetPackage#getFacet_FacetElements()
* @model containment="true"
* @generated
*/
EList<EStructuralFeature> getFacetElements();
/**
* Returns the value of the '<em><b>Facet Operations</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.FacetOperation}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Facet Operations</em>' containment reference list isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Facet Operations</em>' containment reference list.
* @see org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.EFacetPackage#getFacet_FacetOperations()
* @model containment="true"
* @generated
*/
EList<FacetOperation> getFacetOperations();
/**
* Returns the value of the '<em><b>Conformance Typed Element</b></em>' reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Conformance Typed Element</em>' reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Conformance Typed Element</em>' reference.
* @see #setConformanceTypedElement(ETypedElement)
* @see org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.EFacetPackage#getFacet_ConformanceTypedElement()
* @model
* @generated
*/
ETypedElement getConformanceTypedElement();
/**
* Sets the value of the '{@link org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.Facet#getConformanceTypedElement <em>Conformance Typed Element</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Conformance Typed Element</em>' reference.
* @see #getConformanceTypedElement()
* @generated
*/
void setConformanceTypedElement(ETypedElement value);
/**
* Returns the value of the '<em><b>Extended Facets</b></em>' reference list.
* The list contents are of type {@link org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.Facet}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Extended Facets</em>' reference list isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Extended Facets</em>' reference list.
* @see org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.EFacetPackage#getFacet_ExtendedFacets()
* @model annotation="GenModel documentation='A facet can extend other facets. If A facet A can extend a facet B. In this case an eObject conforms to the facet A if it matches conformance evaluation of A and B. '"
* @generated
* @since 0.2
*/
EList<Facet> getExtendedFacets();
} // Facet