org.eclipse.ocl.examples.xtext.base.cs2as
Class CS2PivotConversion

java.lang.Object
  extended by org.eclipse.ocl.examples.pivot.utilities.AbstractConversion
      extended by org.eclipse.ocl.examples.pivot.context.AbstractBase2PivotConversion
          extended by org.eclipse.ocl.examples.xtext.base.cs2as.CS2PivotConversion
All Implemented Interfaces:
Base2PivotConversion

public class CS2PivotConversion
extends AbstractBase2PivotConversion


Nested Class Summary
static class CS2PivotConversion.CacheKey<T>
           
 
Nested classes/interfaces inherited from class org.eclipse.ocl.examples.pivot.utilities.AbstractConversion
AbstractConversion.Predicate<T extends org.eclipse.emf.ecore.EObject>
 
Field Summary
static TracingOption CONTINUATION
           
protected  CS2Pivot converter
           
protected  java.util.Collection<? extends BaseCSResource> csResources
           
 
Fields inherited from class org.eclipse.ocl.examples.pivot.utilities.AbstractConversion
metaModelManager
 
Constructor Summary
CS2PivotConversion(CS2Pivot converter, org.eclipse.xtext.diagnostics.IDiagnosticConsumer diagnosticsConsumer, java.util.Collection<? extends BaseCSResource> csResources)
           
 
Method Summary
 OCLExpression addBadExpressionError(ModelElementCS csElement, java.lang.String boundMessage)
           
 void addDiagnostic(ElementCS csElement, java.lang.String boundMessage)
           
 void addDiagnostic(ModelElementCS csElement, org.eclipse.emf.common.util.Diagnostic diagnostic)
           
 void addWarning(ModelElementCS csElement, java.lang.String message, java.lang.Object... bindings)
           
 java.lang.String bind(org.eclipse.emf.ecore.EObject csContext, java.lang.String messageTemplate, java.lang.Object... bindings)
           
 boolean checkForNoErrors(java.util.Collection<? extends BaseCSResource> csResources)
           
 Dependency createTypeIsReferenceableDependency(TypeRefCS csTemplateParameter)
           
protected  void diagnoseContinuationFailure(java.util.List<BasicContinuation<?>> continuations)
           
 void garbageCollect(java.util.Map<? extends org.eclipse.emf.ecore.resource.Resource,? extends ASResource> cs2asResourceMap)
          Prune the pivots to eliminate: - redundant orphans - e.g.
protected  void gatherNewPackage(java.util.Set<Package> newPackages, org.eclipse.emf.ecore.EObject pivot)
           
protected  void gatherNewPackages(java.util.Set<Package> newPackages, org.eclipse.emf.ecore.resource.Resource csResource)
          Add any packages and nested packages pivoted by csResource to newPackages.
protected  void gatherOldPackages(java.util.List<? extends Package> pkgs)
          Add any packages and nested packages in eObjects to oldPackages.
 CS2Pivot getConverter()
           
<T> T
getIntermediate(CS2PivotConversion.CacheKey<T> key)
           
 Package getOldPackageByQualifiedName(PackageCS csElement)
           
 Package getOldPackageBySimpleName(java.lang.String name)
           
protected  java.lang.String getQualifiedName(java.lang.StringBuilder s, Package pkg)
           
protected  java.lang.String getQualifiedName(java.lang.StringBuilder s, PackageCS csPackage)
           
protected  java.util.List<TemplateBindingCS> getTemplateBindings(ElementCS csElement)
           
protected  java.util.List<TemplateSignature> getTemplateSignatures(Element pivotElement)
           
 InterDependency<BaseCSPreOrderVisitor.TemplateSignatureContinuation> getTypesHaveSignaturesInterDependency()
           
 void handleVisitNamedElement(NamedElementCS csNamedElement, NamedElement pivotElement)
           
 void installPivotReference(ElementRefCS csElement, Element newPivotElement, org.eclipse.emf.ecore.EReference eReference)
           
 void installPivotTypeWithMultiplicity(Type pivotType, TypedRefCS csElement)
           
 void installPivotUsage(ModelElementCS csElement, Element newPivotElement)
           
protected  void installRootContents(BaseCSResource csResource)
           
 void installRootElement(BaseCSResource csResource, Element pivotElement)
           
 void installRootElement(org.eclipse.emf.ecore.resource.Resource csResource, Element pivotElement)
          Deprecated. 
 boolean isInReturnTypeWithUnresolvedParameters(ElementCS csElement)
           
protected  java.util.List<BasicContinuation<?>> progressContinuations(java.util.List<BasicContinuation<?>> continuations)
          Invoke all of the continuations that can execute, returning the list of continuations till to perform, some of which may be ones that were blocked by unsatisfied dependencies, others of which may be further continuations resulting from only partial progress.
<T> T
putIntermediate(CS2PivotConversion.CacheKey<T> key, T object)
           
 void refreshComments(Element pivotElement, ElementCS csElement)
           
 void refreshContextVariable(ExpressionInOCL pivotSpecification)
           
<T extends Element>
void
refreshList(java.lang.Class<T> pivotClass, java.util.List<T> pivotElements, java.util.List<? extends PivotableElementCS> csElements)
           
<T extends Element>
T
refreshModelElement(java.lang.Class<T> pivotClass, org.eclipse.emf.ecore.EClass pivotEClass, ModelElementCS csElement)
          Return a pivotEClass instance cast to pivotClass registered for csElement.getCSI().
<T extends Element>
void
refreshPivotList(java.lang.Class<T> pivotClass, java.util.List<? super T> pivotElements, java.util.List<? extends ModelElementCS> csElements)
           
 Type refreshRequiredType(TypedMultiplicityElement pivotElement, TypedElementCS csTypedElement)
           
 void refreshTemplateSignature(TemplateableElementCS csTemplateableElement, TemplateableElement pivotTemplateableElement)
           
protected  void resetPivotMappings(java.util.Collection<? extends BaseCSResource> csResources)
           
 void setReferredIteration(LoopExp expression, Iteration iteration)
           
 void setReferredOperation(OperationCallExp expression, Operation operation)
           
protected  void specializeTemplateBindings(java.util.List<TemplateBinding> templateBindings, java.util.List<TemplateSignature> templateSignatures, java.util.List<TemplateBindingCS> csTemplateBindings)
          Update a list of TemplateBinding to match a list of TemplateSignature by moving/adding/removing existing entries.
protected  void specializeTemplateParameterSubstitutions(java.util.List<TemplateParameterSubstitution> templateParameterSubstitutions, java.util.List<TemplateParameter> templateParameters, java.util.List<TemplateParameterSubstitutionCS> csTemplateParameterSubstitutions)
          Update a list of TemplateParameterSubstitution to match a list of TemplateParameter by moving/adding/removing existing entries.
protected  TemplateableElement specializeTemplates(TypedTypeRefCS csElement)
           
 boolean update()
          Sequence the update passes to make the pivot match the CS.
protected  void visitContainment(ElementCS csElement, java.util.List<BasicContinuation<?>> continuations)
           
protected  void visitInPostOrder(ElementCS csElement, java.util.List<BasicContinuation<?>> continuations)
           
protected  void visitInPreOrder(ElementCS csElement, java.util.List<BasicContinuation<?>> continuations)
           
<T extends Element>
T
visitLeft2Right(java.lang.Class<T> pivotClass, ElementCS csElement)
           
 
Methods inherited from class org.eclipse.ocl.examples.pivot.context.AbstractBase2PivotConversion
addUnderspecifiedTypedElement, refreshName, refreshNsURI, resolveUnderspecifiedType, resolveUnderspecifiedTypes, setBehavioralType, setClassifierContext, setContextVariable, setOperationContext, setParameterVariables, setParameterVariables, setPropertyContext, setResultVariable, setType, setType
 
Methods inherited from class org.eclipse.ocl.examples.pivot.utilities.AbstractConversion
basicGet, getEPackage, getMetaModelManager, isId, refreshList, refreshSet
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CONTINUATION

@NonNull
public static final TracingOption CONTINUATION

converter

@NonNull
protected final CS2Pivot converter

csResources

@NonNull
protected final java.util.Collection<? extends BaseCSResource> csResources
Constructor Detail

CS2PivotConversion

public CS2PivotConversion(@NonNull
                          CS2Pivot converter,
                          @NonNull
                          org.eclipse.xtext.diagnostics.IDiagnosticConsumer diagnosticsConsumer,
                          @NonNull
                          java.util.Collection<? extends BaseCSResource> csResources)
Method Detail

addBadExpressionError

@NonNull
public OCLExpression addBadExpressionError(@NonNull
                                                   ModelElementCS csElement,
                                                   @NonNull
                                                   java.lang.String boundMessage)

addDiagnostic

public void addDiagnostic(@NonNull
                          ModelElementCS csElement,
                          @NonNull
                          org.eclipse.emf.common.util.Diagnostic diagnostic)

addDiagnostic

public void addDiagnostic(@NonNull
                          ElementCS csElement,
                          @NonNull
                          java.lang.String boundMessage)

addWarning

public void addWarning(@NonNull
                       ModelElementCS csElement,
                       java.lang.String message,
                       java.lang.Object... bindings)

bind

@NonNull
public java.lang.String bind(@NonNull
                                     org.eclipse.emf.ecore.EObject csContext,
                                     java.lang.String messageTemplate,
                                     java.lang.Object... bindings)

checkForNoErrors

public boolean checkForNoErrors(@NonNull
                                java.util.Collection<? extends BaseCSResource> csResources)

createTypeIsReferenceableDependency

public Dependency createTypeIsReferenceableDependency(@NonNull
                                                      TypeRefCS csTemplateParameter)

diagnoseContinuationFailure

protected void diagnoseContinuationFailure(@NonNull
                                           java.util.List<BasicContinuation<?>> continuations)

garbageCollect

public void garbageCollect(@NonNull
                           java.util.Map<? extends org.eclipse.emf.ecore.resource.Resource,? extends ASResource> cs2asResourceMap)
Prune the pivots to eliminate: - redundant orphans - e.g. obsolete specializations - redundant elements - e.g. pivots that are not needed as a result of a CS update - dependent caches that reference any of the above Wanted pivot elements are - all elements in all libraries - all elements locked via MetaModelManager.addLockedElement() - all elements transitively in/referenced from the above - all elements referenced by incoming CS resources - all elements in all incoming pivot resources - except pivot resources mapped to incoming CS resources this is what we're cleaning up


gatherNewPackage

protected void gatherNewPackage(@NonNull
                                java.util.Set<Package> newPackages,
                                @NonNull
                                org.eclipse.emf.ecore.EObject pivot)

gatherNewPackages

protected void gatherNewPackages(@NonNull
                                 java.util.Set<Package> newPackages,
                                 @NonNull
                                 org.eclipse.emf.ecore.resource.Resource csResource)
Add any packages and nested packages pivoted by csResource to newPackages. This is invoked at the end of an update to identify redundant packages.


gatherOldPackages

protected void gatherOldPackages(@NonNull
                                 java.util.List<? extends Package> pkgs)
Add any packages and nested packages in eObjects to oldPackages. This is invoked at the start of an update to cache the packages for re-use.


getConverter

@NonNull
public final CS2Pivot getConverter()

getIntermediate

public <T> T getIntermediate(@NonNull
                             CS2PivotConversion.CacheKey<T> key)

getOldPackageByQualifiedName

@Nullable
public Package getOldPackageByQualifiedName(@NonNull
                                                     PackageCS csElement)

getOldPackageBySimpleName

@Nullable
public Package getOldPackageBySimpleName(@NonNull
                                                  java.lang.String name)

getQualifiedName

@NonNull
protected java.lang.String getQualifiedName(@NonNull
                                                    java.lang.StringBuilder s,
                                                    @NonNull
                                                    Package pkg)

getQualifiedName

@NonNull
protected java.lang.String getQualifiedName(@NonNull
                                                    java.lang.StringBuilder s,
                                                    @NonNull
                                                    PackageCS csPackage)

getTemplateBindings

@NonNull
protected java.util.List<TemplateBindingCS> getTemplateBindings(@NonNull
                                                                        ElementCS csElement)

getTemplateSignatures

@NonNull
protected java.util.List<TemplateSignature> getTemplateSignatures(@NonNull
                                                                          Element pivotElement)

getTypesHaveSignaturesInterDependency

@NonNull
public InterDependency<BaseCSPreOrderVisitor.TemplateSignatureContinuation> getTypesHaveSignaturesInterDependency()

handleVisitNamedElement

public void handleVisitNamedElement(@NonNull
                                    NamedElementCS csNamedElement,
                                    @NonNull
                                    NamedElement pivotElement)

installPivotReference

public void installPivotReference(@NonNull
                                  ElementRefCS csElement,
                                  @NonNull
                                  Element newPivotElement,
                                  org.eclipse.emf.ecore.EReference eReference)

installPivotUsage

public void installPivotUsage(@NonNull
                              ModelElementCS csElement,
                              @NonNull
                              Element newPivotElement)

installRootContents

protected void installRootContents(@NonNull
                                   BaseCSResource csResource)

installPivotTypeWithMultiplicity

public void installPivotTypeWithMultiplicity(@NonNull
                                             Type pivotType,
                                             @NonNull
                                             TypedRefCS csElement)

installRootElement

@Deprecated
public void installRootElement(@NonNull
                                          org.eclipse.emf.ecore.resource.Resource csResource,
                                          @NonNull
                                          Element pivotElement)
Deprecated. 


installRootElement

public void installRootElement(@NonNull
                               BaseCSResource csResource,
                               @NonNull
                               Element pivotElement)

isInReturnTypeWithUnresolvedParameters

public boolean isInReturnTypeWithUnresolvedParameters(@NonNull
                                                      ElementCS csElement)

progressContinuations

@Nullable
protected java.util.List<BasicContinuation<?>> progressContinuations(@NonNull
                                                                              java.util.List<BasicContinuation<?>> continuations)
Invoke all of the continuations that can execute, returning the list of continuations till to perform, some of which may be ones that were blocked by unsatisfied dependencies, others of which may be further continuations resulting from only partial progress. Returns null if none of the continuations could execute.

Parameters:
continuations -
Returns:
continuations still to perform, null if stuck.

putIntermediate

public <T> T putIntermediate(CS2PivotConversion.CacheKey<T> key,
                             T object)

refreshComments

public void refreshComments(Element pivotElement,
                            ElementCS csElement)

refreshContextVariable

public void refreshContextVariable(@NonNull
                                   ExpressionInOCL pivotSpecification)

refreshList

public <T extends Element> void refreshList(@NonNull
                                            java.lang.Class<T> pivotClass,
                                            java.util.List<T> pivotElements,
                                            java.util.List<? extends PivotableElementCS> csElements)

refreshModelElement

@NonNull
public <T extends Element> T refreshModelElement(@NonNull
                                                         java.lang.Class<T> pivotClass,
                                                         org.eclipse.emf.ecore.EClass pivotEClass,
                                                         @Nullable
                                                         ModelElementCS csElement)
Return a pivotEClass instance cast to pivotClass registered for csElement.getCSI().

An existing element is re-used else an new instance is created.

The pivot element is installed as the original object of csElement.

Type Parameters:
T -
Parameters:
pivotClass -
pivotEClass -
csElement -
Returns:

refreshPivotList

public <T extends Element> void refreshPivotList(@NonNull
                                                 java.lang.Class<T> pivotClass,
                                                 java.util.List<? super T> pivotElements,
                                                 java.util.List<? extends ModelElementCS> csElements)

refreshRequiredType

public Type refreshRequiredType(@NonNull
                                TypedMultiplicityElement pivotElement,
                                @NonNull
                                TypedElementCS csTypedElement)

refreshTemplateSignature

public void refreshTemplateSignature(@NonNull
                                     TemplateableElementCS csTemplateableElement,
                                     @NonNull
                                     TemplateableElement pivotTemplateableElement)

resetPivotMappings

protected void resetPivotMappings(@NonNull
                                  java.util.Collection<? extends BaseCSResource> csResources)

setReferredIteration

public void setReferredIteration(@NonNull
                                 LoopExp expression,
                                 @Nullable
                                 Iteration iteration)

setReferredOperation

public void setReferredOperation(@NonNull
                                 OperationCallExp expression,
                                 @Nullable
                                 Operation operation)

specializeTemplateBindings

protected void specializeTemplateBindings(@NonNull
                                          java.util.List<TemplateBinding> templateBindings,
                                          @NonNull
                                          java.util.List<TemplateSignature> templateSignatures,
                                          @NonNull
                                          java.util.List<TemplateBindingCS> csTemplateBindings)
Update a list of TemplateBinding to match a list of TemplateSignature by moving/adding/removing existing entries. Once matched each TemplateBinding.signature references the corresponding TemplateSignature, and each TemplateBinding.parameterSubstitution.formal references the corresponding TemplateSignature.ownedParameter.

Parameters:
templateBindings -
templateSignatures -

specializeTemplateParameterSubstitutions

protected void specializeTemplateParameterSubstitutions(@NonNull
                                                        java.util.List<TemplateParameterSubstitution> templateParameterSubstitutions,
                                                        @NonNull
                                                        java.util.List<TemplateParameter> templateParameters,
                                                        @NonNull
                                                        java.util.List<TemplateParameterSubstitutionCS> csTemplateParameterSubstitutions)
Update a list of TemplateParameterSubstitution to match a list of TemplateParameter by moving/adding/removing existing entries. Once matched each TemplateParameterSubstitution.formal references the corresponding TemplateParameter.

Parameters:
eList -
templateSignature -
templateBinding -

specializeTemplates

@Nullable
protected TemplateableElement specializeTemplates(@NonNull
                                                           TypedTypeRefCS csElement)

update

public boolean update()
Sequence the update passes to make the pivot match the CS.

Parameters:
csResources -

visitContainment

protected void visitContainment(@NonNull
                                ElementCS csElement,
                                @NonNull
                                java.util.List<BasicContinuation<?>> continuations)

visitInPostOrder

protected void visitInPostOrder(@NonNull
                                ElementCS csElement,
                                @NonNull
                                java.util.List<BasicContinuation<?>> continuations)

visitInPreOrder

protected void visitInPreOrder(@NonNull
                               ElementCS csElement,
                               @NonNull
                               java.util.List<BasicContinuation<?>> continuations)

visitLeft2Right

public <T extends Element> T visitLeft2Right(@NonNull
                                             java.lang.Class<T> pivotClass,
                                             @NonNull
                                             ElementCS csElement)