blob: 37b6e7e4ea40cbc49d44547ba59f810ce1166895 [file] [log] [blame]
/**
* Copyright (c) 2002-2009 IBM Corporation and others.
* 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:
* IBM - Initial API and implementation
*/
package org.eclipse.emf.codegen.ecore.genmodel;
import java.util.Collection;
import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Gen Class</b></em>'.
* <!-- end-user-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#getProvider <em>Provider</em>}</li>
* <li>{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#isImage <em>Image</em>}</li>
* <li>{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#isDynamic <em>Dynamic</em>}</li>
* <li>{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#getEcoreClass <em>Ecore Class</em>}</li>
* <li>{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#getGenFeatures <em>Gen Features</em>}</li>
* <li>{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#getGenOperations <em>Gen Operations</em>}</li>
* <li>{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#getLabelFeature <em>Label Feature</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage#getGenClass()
* @model
* @generated
*/
public interface GenClass extends GenClassifier
{
/**
* Returns the value of the '<em><b>Provider</b></em>' attribute.
* The literals are from the enumeration {@link org.eclipse.emf.codegen.ecore.genmodel.GenProviderKind}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @return the value of the '<em>Provider</em>' attribute.
* @see org.eclipse.emf.codegen.ecore.genmodel.GenProviderKind
* @see #setProvider(GenProviderKind)
* @see org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage#getGenClass_Provider()
* @model
* @generated
*/
GenProviderKind getProvider();
/**
* Sets the value of the '{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#getProvider <em>Provider</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Provider</em>' attribute.
* @see org.eclipse.emf.codegen.ecore.genmodel.GenProviderKind
* @see #getProvider()
* @generated
*/
void setProvider(GenProviderKind value);
/**
* Returns the value of the '<em><b>Image</b></em>' attribute.
* The default value is <code>"true"</code>.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @return the value of the '<em>Image</em>' attribute.
* @see #setImage(boolean)
* @see org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage#getGenClass_Image()
* @model default="true"
* @generated
*/
boolean isImage();
/**
* Sets the value of the '{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#isImage <em>Image</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Image</em>' attribute.
* @see #isImage()
* @generated
*/
void setImage(boolean value);
/**
* Returns the value of the '<em><b>Dynamic</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @return the value of the '<em>Dynamic</em>' attribute.
* @see #setDynamic(boolean)
* @see org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage#getGenClass_Dynamic()
* @model
* @generated
*/
boolean isDynamic();
/**
* Sets the value of the '{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#isDynamic <em>Dynamic</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Dynamic</em>' attribute.
* @see #isDynamic()
* @generated
*/
void setDynamic(boolean value);
/**
* Returns the value of the '<em><b>Ecore Class</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @return the value of the '<em>Ecore Class</em>' reference.
* @see #setEcoreClass(EClass)
* @see org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage#getGenClass_EcoreClass()
* @model required="true"
* @generated
*/
EClass getEcoreClass();
/**
* Sets the value of the '{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#getEcoreClass <em>Ecore Class</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Ecore Class</em>' reference.
* @see #getEcoreClass()
* @generated
*/
void setEcoreClass(EClass value);
/**
* Returns the value of the '<em><b>Gen Features</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.emf.codegen.ecore.genmodel.GenFeature}.
* It is bidirectional and its opposite is '{@link org.eclipse.emf.codegen.ecore.genmodel.GenFeature#getGenClass <em>Gen Class</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @return the value of the '<em>Gen Features</em>' containment reference list.
* @see org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage#getGenClass_GenFeatures()
* @see org.eclipse.emf.codegen.ecore.genmodel.GenFeature#getGenClass
* @model opposite="genClass" containment="true"
* @generated
*/
EList<GenFeature> getGenFeatures();
/**
* Returns the value of the '<em><b>Gen Operations</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.emf.codegen.ecore.genmodel.GenOperation}.
* It is bidirectional and its opposite is '{@link org.eclipse.emf.codegen.ecore.genmodel.GenOperation#getGenClass <em>Gen Class</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @return the value of the '<em>Gen Operations</em>' containment reference list.
* @see org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage#getGenClass_GenOperations()
* @see org.eclipse.emf.codegen.ecore.genmodel.GenOperation#getGenClass
* @model opposite="genClass" containment="true"
* @generated
*/
EList<GenOperation> getGenOperations();
/**
* Returns the value of the '<em><b>Label Feature</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @return the value of the '<em>Label Feature</em>' reference.
* @see #setLabelFeature(GenFeature)
* @see org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage#getGenClass_LabelFeature()
* @model
* @generated
*/
GenFeature getLabelFeature();
/**
* Sets the value of the '{@link org.eclipse.emf.codegen.ecore.genmodel.GenClass#getLabelFeature <em>Label Feature</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Label Feature</em>' reference.
* @see #getLabelFeature()
* @generated
*/
void setLabelFeature(GenFeature value);
/**
* This should only be called when there is actually an interface being
* generated (i.e. when, for certain, this is not an external interface).
* Otherwise, getImportedInterfaceName() should be used.
*/
String getInterfaceName();
String getQualifiedInterfaceName();
String getImportedInterfaceName();
/**
* @since 2.3
*/
String getRawImportedInterfaceName();
String getClassName();
String getQualifiedClassName();
String getImportedClassName();
/**
* This returns the name uncapitalized. Callers that plan to use this name
* without appending a suffix should call getSafeUncapInterfaceName() to
* make sure it's not a reserved word.
*/
String getUncapName();
List<GenClass> getBaseGenClasses();
List<GenClass> getAllBaseGenClasses();
/**
* Like getAllBaseGenClasses(), this returns the GenClasses for all of the
* supertypes, but the result is ordered by a breadth-first search, making
* it appropriate for use in the switch class.
*/
List<GenClass> getSwitchGenClasses();
/**
* This returns the GenClass for the first immediate supertype.
*/
GenClass getBaseGenClass();
/**
* This walks up the chain of GenClasses defined by getBaseGenClass() and
* returns the first that does not represent an abstract class or an
* interface; that is, the instantiable class that the implementation
* class should extended.
*/
GenClass getClassExtendsGenClass();
String getClassExtends();
String getClassImplements();
String getInterfaceExtends();
boolean needsRootExtendsInterfaceExtendsTag();
/**
* @since 2.5
*/
void addClassPsuedoImports();
/**
* @since 2.3
*/
boolean hasGenericSuperTypes();
/**
* @since 2.3
*/
String getTypeParameters();
/**
* @since 2.3
*/
String getInterfaceTypeArguments();
/**
* @since 2.3
*/
String getInterfaceWildTypeArguments();
/**
* @since 2.3
*/
String getClassTypeArguments();
List<GenFeature> getAllGenFeatures();
List<GenFeature> getInheritedGenFeatures();
List<GenOperation> getAllGenOperations();
/**
* @since 2.6
*/
List<GenOperation> getAllGenOperations(boolean excludeOverrides);
String getFeatureID(GenFeature genFeature);
String getQualifiedFeatureID(GenFeature genFeature);
String getOperationID(GenOperation genOperation);
String getFeatureValue(GenFeature genFeature);
String getLocalFeatureIndex(GenFeature genFeature);
String getFlagsField(GenFeature genFeature);
int getFlagIndex(GenFeature genFeature);
/**
* @since 2.6
*/
String getUniqueName(GenOperation genOperation);
/**
* @since 2.6
*/
String getOperationID(GenOperation genOperation, boolean diagnosticCode);
/**
* @since 2.6
*/
String getQualifiedOperationID(GenOperation genOperation);
/**
* @since 2.6
*/
String getOperationValue(GenOperation genOperation);
/**
* @since 2.6
*/
String getLocalOperationIndex(GenOperation genOperation);
/**
* @since 2.8
*/
void clearCache();
/**
* @since 2.4
*/
int getFlagSize(GenFeature genFeature);
/**
* @since 2.4
*/
String getFlagMask(GenFeature genFeature);
String getESetFlagsField(GenFeature genFeature);
int getESetFlagIndex(GenFeature genFeature);
String getFeatureCountID();
String getQualifiedFeatureCountID();
String getFeatureCountValue();
int getFeatureCount();
/**
* @since 2.6
*/
String getOperationCountID();
/**
* @since 2.6
*/
String getQualifiedOperationCountID();
/**
* @since 2.6
*/
String getOperationCountValue();
/**
* @since 2.6
*/
int getOperationCount();
/**
* @since 2.6
*/
GenOperation getOverrideGenOperation(GenOperation genOperation);
/**
* @since 2.6
*/
List<GenOperation> getOverrideGenOperations(List<GenOperation> baseGenOperations, List<GenOperation> derivedGenOperations);
boolean isEObject();
boolean isEObjectExtension();
String getCastFromEObject();
boolean isAbstract();
String getAbstractFlag();
boolean isInterface();
String getInterfaceFlag();
/**
* This indicates that there is already an existing interface for this
* class or interface, so none will be generated. Any other generated
* that wishes to refer to its interface should use the value from
* getQualifiedInterfaceName() or getImportedInterfaceName().
*/
boolean isExternalInterface();
boolean isMapEntry();
GenFeature getMapEntryKeyFeature();
GenFeature getMapEntryValueFeature();
List<GenClass> getImplementedGenClasses();
List<GenFeature> getImplementedGenFeatures();
List<GenOperation> getImplementedGenOperations();
/**
* @since 2.4
*/
boolean hasImplementedToStringGenOperation();
GenModel getImplementingGenModel(GenFeature genFeature);
// Returns whether this class implements any of the given features.
public boolean implementsAny(Collection<GenFeature> genFeatures);
List<GenClass> getExtendedGenClasses();
List<GenFeature> getExtendedGenFeatures();
List<GenOperation> getExtendedGenOperations();
List<GenFeature> getDeclaredFieldGenFeatures();
List<GenFeature> getDeclaredGenFeatures();
List<GenOperation> getDeclaredGenOperations();
List<GenFeature> getFlagGenFeatures();
/**
* @deprecated use {@link #getFlagGenFeaturesWithDefault()}
*/
@Deprecated
List<GenFeature> getFlagGenFeatures(String staticDefaultValue);
/**
* @since 2.4
*/
List<GenFeature> getFlagGenFeaturesWithDefault();
List<GenFeature> getEGetGenFeatures();
List<GenFeature> getEIsSetGenFeatures();
List<GenFeature> getESetGenFeatures();
List<GenFeature> getEUnsetGenFeatures();
List<GenFeature> getEInverseAddGenFeatures();
List<GenFeature> getEInverseRemoveGenFeatures();
List<GenFeature> getEBasicRemoveFromContainerGenFeatures();
List<GenFeature> getToStringGenFeatures();
List<GenClass> getMixinGenClasses();
List<GenFeature> getMixinGenFeatures();
List<GenOperation> getMixinGenOperations();
void initialize(EClass eClass);
//
// EMFEdit generation
//
String getProviderClassName();
String getQualifiedProviderClassName();
String getImportedProviderClassName();
boolean isProviderSingleton();
String getItemIconFileName();
/**
* @since 2.4
*/
String getCreateChildIconFileName(GenModel genModel, GenFeature feature, GenClass childClass);
String getCreateChildIconFileName(GenFeature feature, GenClass childClass);
/**
* @since 2.7
*/
String getItemIconAccessorName();
/**
* @since 2.4
*/
GenClass getProviderExtendsGenClass();
String getProviderBaseClassName();
List<GenClass> getProviderImplementedGenClasses();
/**
* @since 2.10
*/
List<String> getProviderImplementsClassNames();
List<GenFeature> getLabelFeatureCandidates();
List<GenFeature> getPropertyFeatures();
List<GenFeature> getNotifyFeatures();
List<GenFeature> getLabelNotifyFeatures();
List<GenFeature> getContentNotifyFeatures();
List<GenFeature> getLabelAndContentNotifyFeatures();
List<GenFeature> getChildrenFeatures();
List<GenFeature> getAllChildrenFeatures();
List<GenFeature> getCreateChildFeatures();
List<GenFeature> getAllCreateChildFeatures();
/**
* @since 2.4
*/
List<GenFeature> getCreateChildFeaturesIncludingDelegation();
List<GenFeature> getAllCreateChildFeaturesIncludingDelegation();
List<GenFeature> getCrossPackageCreateChildFeatures();
List<GenFeature> getSharedClassCreateChildFeatures();
boolean hasFeatureMapCreateChildFeatures();
/**
* @since 2.4
*/
public final class ChildCreationData
{
public final GenFeature createFeature;
public final GenFeature delegatedFeature;
public final GenClassifier createClassifier;
public ChildCreationData(GenFeature createFeature, GenFeature delegateFeature, GenClassifier createClassifier)
{
this.createFeature = createFeature;
this.delegatedFeature = delegateFeature;
this.createClassifier = createClassifier;
}
@Override
public boolean equals(Object object)
{
if (object instanceof ChildCreationData)
{
ChildCreationData that = (ChildCreationData)object;
return
createFeature == that.createFeature &&
delegatedFeature == that.delegatedFeature &&
createClassifier == that.createClassifier;
}
else
{
return false;
}
}
@Override
public int hashCode()
{
return
(createFeature == null ? 0 : createFeature.hashCode()) ^
(delegatedFeature == null ? 0 : delegatedFeature.hashCode()) ^
(createClassifier == null ? 0 : createClassifier.hashCode());
}
}
/**
* @since 2.4
*/
List<ChildCreationData> getChildCreationData(GenModel context);
/**
* @since 2.4
*/
List<ChildCreationData> getChildCreationData();
List<GenClass> getChildrenClasses(GenFeature genFeature);
List<GenClass> getCrossPackageChildrenClasses(GenFeature genFeature);
String getItemProviderAdapterFactoryClassName();
String getTestCaseClassName();
String getQualifiedTestCaseClassName();
String getImportedTestCaseClassName();
String getModelInfo();
boolean reconcile(GenClass oldGenClassVersion);
List<GenOperation> getInvariantOperations();
GenOperation getInvariantOperation(String constraint);
boolean isDocumentRoot();
GenFeature getMixedGenFeature();
String getListConstructor(GenFeature genFeature);
boolean isModelRoot();
boolean isFlag(GenFeature genFeature);
boolean isESetFlag(GenFeature genFeature);
boolean isField(GenFeature genFeature);
boolean isESetField(GenFeature genFeature);
boolean hasTests();
String getEVirtualValuesField();
List<String> getEVirtualIndexBitFields(List<String> eVirtualIndexBitFields);
List<String> getAllEVirtualIndexBitFields(List<String> allEVirtualIndexBitFields);
boolean isJavaIOSerializable();
boolean hasFactoryInterfaceCreateMethod();
/**
* @since 2.3
*/
boolean hasOffsetCorrection();
/**
* @since 2.3
*/
String getOffsetCorrectionField(GenFeature genFeature);
/**
* @since 2.4
*/
boolean needsHasChildrenMethodOverride();
/**
* @since 2.4
*/
GenOperation getGetAccessorOperation(GenFeature genFeature);
/**
* @since 2.4
*/
GenOperation getIsSetAccessorOperation(GenFeature genFeature);
/**
* @since 2.4
*/
GenOperation getSetAccessorOperation(GenFeature genFeature);
/**
* @since 2.4
*/
GenOperation getUnsetAccessorOperation(GenFeature genFeature);
/**
* @since 2.4
*/
boolean hasCollidingGetAccessorOperation(GenFeature genFeature);
/**
* @since 2.4
*/
boolean hasCollidingIsSetAccessorOperation(GenFeature genFeature);
/**
* @since 2.4
*/
boolean hasCollidingSetAccessorOperation(GenFeature genFeature);
/**
* @since 2.4
*/
boolean hasCollidingUnsetAccessorOperation(GenFeature genFeature);
/**
* Returns a list that corresponds to {@link #getInterfaceExtends()}.
* @since 2.8
*/
List<String> getQualifiedInterfaceExtendsList();
/**
* Returns a list that corresponds to {@link #getClassImplements()}.
* @since 2.8
*/
List<String> getQualifiedClassImplementsList();
/**
* Returns a value that corresponds to {@link #getClassExtends()}.
* @since 2.8
*/
String getQualifiedClassExtends();
/**
* @since 2.9
*/
List<GenFeature> getReifiedGenFeatures();
/**
* @since 2.9
*/
boolean isRawBaseClass(GenClass baseClass);
/**
* @since 2.10
*/
boolean hasStaticFeatures();
}